2016-01-26 4 views
-2

J'ai 30 fichiers csv, nommés 101.csv, 102.csv etc. avec quatre colonnes chacun, mais avec un nombre variable de lignes. Mon intention est de calculer la moyenne et la valeur médiane de la quatrième colonne dans chaque fichier csv.Séparer les valeurs moyennes et médianes des colonnes 4 dans une liste de bases de données?

j'ai commencé en faisant un ListofDataFrames avec:

listOfDataframes <- lapply(paste0(101:130, ".csv"), read.csv) 

Il ressemble à ceci:

[[1]]    
1    contig02534_1_120507-bin0\t477\t585\t50  
2    contig02534_1_120507-bin0\t585\t2695\t0    
3    contig06975_1_120507-bin0\t0\t732\t100 
... 

[[2]] 
... 

Je voudrais terminer avec une nouvelle table de données résumant 1) la valeur moyenne de la colonne quatre et 2) la valeur médiane de la colonne quatre. Et cela devrait être pour chaque trame de données séparément, comme celui-ci par exemple:

  mean  median 
[[1]]  75  50 
[[2]]  65  100 

J'ai essayé différentes approches publiées ici mais ne peut pas les amener à travailler comme je veux. Toute aide serait très appréciée!

+1

Je pense que vous devez utiliser 'sep =" \ t "' – akrun

+0

[voir ici pour une explication sur la façon de lire et de combiner plusieurs fichiers en un seul] (http://stackoverflow.com/questions/32888757/reading- multiple-files-into-r-best-practice/32888918 # 32888918); après cela, vous pouvez calculer les valeurs souhaitées, voir: [un] (http://stackoverflow.com/questions/32795456/how-to-summarize-a-data-frame-into-a-new-one-that-tells -means-of-separate-levels/32795497 # 32795497) & [deux] (http://stackoverflow.com/questions/12064202/using-aggregate-for-multiple-agrencies/34240880#34240880) – Jaap

Répondre

0

Mon approche habituelle de cela va quelque chose comme

library(dplyr) 
lapply(101:130), 
        function(x){ 
        D <- read.csv(paste0(x, ".csv", sep = "\t") 
        D$set <- x 
       ) %>% 
    do.call("rbind", .) %>% 
    setNames(c("col1", "col2", "col3", "col4", "set")) %>% 
    group_by(set) %>% 
    summarise(mean = mean(col4), 
      median = median(col4)) 

Votre exemple n'était pas reproductible, c'est donc non testé.