0
votes

Régression linéaire sur 415 fichiers, sortie juste nom de fichier, coefficient de régression, signification

Je suis un débutant dans R, j'apprends les bases pour analyser certaines données biologiques. J'ai 415 fichiers .csv, chacun est une espèce fongique. Chaque fichier comporte 5 colonnes - (année, FFD, LFD, moyenne, plage)

Call:
lm(formula = ffd ~ yr)

Residuals:
    Min      1Q  Median      3Q     Max 
-77.358 -20.858  -5.714  22.494  96.015 

Coefficients:
              Estimate Std. Error t value Pr(>|t|)    
(Intercept) -4162.0710   950.1439  -4.380 0.000119 ***
yr              2.1864     0.4765   4.588 6.55e-05 ***
---
Signif. codes:  
0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 38.75 on 32 degrees of freedom
  (31 observations deleted due to missingness)
Multiple R-squared:  0.3968,    Adjusted R-squared:  0.378 
F-statistic: 21.05 on 1 and 32 DF,  p-value: 6.549e-05


0 commentaires

4 Réponses :


0
votes

Vous pouvez écrire un script R qui fonctionne sur un seul fichier, puis exécutez-le sur chaque fichier via la borne.

Le script est simplement un fichier .r avec code à l'intérieur. Pour l'exécuter sur chaque fichier, vous allez exécuter sur votre terminal quelque chose sur les lignes de (à l'aide de bash) xxx

ceci exécuterait le script dans YourScriptFile.r sur chaque fichier de votre dossier et enregistrer la sortie sur finalOutput.

Le code de script lui-même serait très similaire à celui que vous avez déjà écrit, mais au lieu de fichier.choose () vous utiliseriez l'argument passé. par la ligne de commande, comme décrit Ici , et vous devriez imprimer uniquement les informations que vous avez instailées, au lieu de la sortie de Résumé . FinalOutput pourrait même être un fichier CSV si vous formatez la sortie du script correctement.


0 commentaires

3
votes

Tout d'abord, je simulé comme 5 fichiers CSV, avec des colonnes qui ressemblent à la tienne: xxx pré>

maintenant, nous avons besoin d'un vecteur de tous les fichiers de votre répertoire, ce sera différent pour le vôtre, mais essayez de créer cela en quelque sorte à l'aide de l'argument de motif: p> xxx pré>

Nous utilisons donc trois bibliothèques de Tairyverse, et je suppose que chaque fichier CSV n'est pas aussi énorme, le code ci-dessous Dans tous les fichiers, regroupez-les par la source et effectue la régression, note que vous pouvez utiliser appelez les colonnes à partir de la trame de données, sans avoir à les renommer: P>

library(dplyr)
library(purrr)
library(broom)

csvfiles %>% 
map_df(function(i){df = read.csv(i);df$data = i;df}) %>%  
group_by(data) %>% 
do(tidy(lm(FFD ~ YEAR,data=.))) %>% 
filter(term!="(Intercept)")

# A tibble: 5 x 6
# Groups:   data [5]
  data      term  estimate std.error statistic p.value
  <chr>     <chr>    <dbl>     <dbl>     <dbl>   <dbl>
1 data1.csv YEAR   -0.0228    0.0731    -0.311 0.756  
2 data2.csv YEAR   -0.139     0.0573    -2.42  0.0182 
3 data3.csv YEAR   -0.175     0.0650    -2.70  0.00901
4 data4.csv YEAR   -0.0478    0.0628    -0.762 0.449  
5 data5.csv YEAR    0.0204    0.0648     0.315 0.754  


1 commentaires

Les commentaires ne sont pas pour une discussion prolongée; Cette conversation a été déplacé pour discuter .



4
votes

Le code suivant fonctionnera probablement.
Je l'ai testé avec vos données dans deux fichiers. Les fonctions qui font tout le travail sont celles-ci: xxx

se trouve maintenant dans les fichiers de données. Dans la ligne de code suivante, remplacez une partie de nom de fichier commun pour "motif" dans l'endroit évident. xxx

et calculez les valeurs souhaitées. < / p> xxx


0 commentaires

1
votes

data.able code> version, utilisant la mise en page et les noms de fichiers CSV de Stupidwolf, mettant en vedette les champs demandés:

        filename regression coefficient       significance
  1:   data1.csv     -0.113286713286712 0.0874762832713643
  2:   data2.csv     -0.044449300699302  0.457096760642717
  3:   data3.csv     0.0464597902097902  0.499618510612891
  4:   data4.csv     -0.032473776223776  0.638494798460044
  5:   data5.csv     0.0562062937062939  0.452955919860998
 ---                                                      
411: data411.csv     0.0381555944055959  0.544185411150829
412: data412.csv    -0.0672202797202807  0.314346452751388
413: data413.csv      0.116564685314687 0.0694785724198052
414: data414.csv    -0.0908216783216786  0.110811677724832
415: data415.csv    -0.0282779720279721  0.638766712090455


0 commentaires