2015-08-21 74 views
2

我有很多csv文件,我需要計算按類型拆分的行數。一個例子csv格式是許多csv文件的計數行按類型拆分R

Type,speed 
Turtle,10 
Lion,50 
Cheetah,100 
Turtle,12 
Lion,70 
Cheetah,110 
Cheetah,170 

因此,例如輸出爲:

Type count 
turtle 2 
lion 2 
cheetah 3 

我可以使用下面的R代碼裏面一個單獨的文件,這樣做:

library(dplyr) 
## 
a1 <- read.csv("data1.csv") 
a1 %>% 
    group_by(Type, Type) %>% 
    summarise(count=n()) 

誰能幫我循環遍歷所有的CSV文件?我有data1.csvdata100.csv

+1

所有這些文件都在同一個目錄中嗎?如果是,它們是那個direc中的* only *文件保守黨? – nrussell

+0

使用'file_list <-list.files(directory,pattern =「。csv」)'得到你的csv文件列表,然後循環到你的列表中(例如'for(file_list中的文件){a1 <-read.csv (file)...}')或者在你的函數列表中使用'lapply' – DJack

+0

是的,它們全都在同一個目錄下,並且是那個目錄中唯一的文件 – SB77

回答

3

正如評論指出,可以使用list.files獲得目錄中的文件列表:

file_list <- list.files(directory) # pattern omitted since they're the only files 

然後讀取所有文件到列表:

files <- lapply(file_list, read.csv, header=TRUE) 
names(files) <- sub("\\.csv$", "", file_list) 

現在,你可以請執行以下操作:

res <- lapply(files, function(dat) dplyr::count(dat, Type)) 
+0

完美的謝謝! – SB77