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
4 Réponses :
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) p> ceci exécuterait le script dans YourScriptFile.r sur chaque fichier de votre dossier et enregistrer la sortie sur finalOutput. p> Le code de script lui-même serait très similaire à celui que vous avez déjà écrit, mais au lieu de fichier.choose () code> 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é code>.
FinalOutput pourrait même être un fichier CSV si vous formatez la sortie du script correctement. p> p>
Tout d'abord, je simulé comme 5 fichiers CSV, avec des colonnes qui ressemblent à la tienne: 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> 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
Les commentaires ne sont pas pour une discussion prolongée; Cette conversation a été déplacé pour discuter .
Le code suivant fonctionnera probablement. se trouve maintenant dans les fichiers de données. Dans la ligne de code suivante, remplacez une partie de nom de fichier commun pour et calculez les valeurs souhaitées. < / p>
Je l'ai testé avec vos données dans deux fichiers. Les fonctions qui font tout le travail sont celles-ci: "motif" code> dans l'endroit évident. P>
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