根据列表将多个.csv文件导入到R中
问题描述:
我的数据:我有几百个主题的纵向数据,程序以week.subjectID.csv的格式吐出数据文件。例如,1.100.csv是第100周的第1周的文件。根据列表将多个.csv文件导入到R中
我的问题:在最后使用该帖子时,我想出了如何读取多个文件并将它们组合在一起(代码如下)。
library(plyr)
#Create list of all weekly files for subject ID 100
files = list.files(pattern="*.100.csv")
#List of data frames
subject = lapply(files, read.delim)
#Throw them altogether
exporty = ldply(subject, data.frame)
#Export new file
write.csv(exporty, "100")
但是,当我不得不为所有主题重复该命令时,这个过程非常缓慢。是否有办法创建我的主题列表,并且一次一个主题,读取其文件,合并它们,导出其组合数据集,然后转到下一个主题上?
答
是你可以把你的所有代码到另一个lapply()
:
library(plyr)
subjects <- c("100", "200", "300")
lapply(subjects, FUN=function(eachsubject){
files = list.files(pattern=paste0("*.", eachsubject, ".csv"))
subject = lapply(files, read.delim)
exporty = ldply(subject, data.frame)
write.csv(exporty, eachsubject)
})
+0
非常感谢你!我认为这会很乐观,但不能把它放在一起......尤其是命名的文件。 – erebusgw
注意'pattern'参数'ls'是_not_通配符表达式,而是一个正则表达式。你想要的是'ls(pattern =“\\。100 \\。csv $”'。 –