我正在尝试合并R中的许多csv文件。当我手动输入两个csv文件的名称时,它们共享一个公共列,并且merge命令正常工作。但是,每次需要执行此操作时,我都会输入太多文件来输入所有名称。
这很好用:
test <- merge(quant_dysmorph_data.csv, srs_adult.csv, by = "individual", all
= TRUE)
我可以为看起来很好的合并命令的输入做类似的事情:
cat(ls(pattern = ".csv"), sep = ",")
返回: bapq.csv,bapq_raw.csv,bapq_recode.csv,fhi_informant.csv,fhi_interviewer.csv,fhi_subject.csv,quant_dysmorph_data.csv,srs_adult.csv(依此类推等等。抱歉,评论框不会将其格式化为输出正确...)
但是,当我使用它作为merge命令的输入时,我收到一个错误:
x <- merge(cat(ls(pattern = ".csv"), sep = ","), by = "individual", all =
TRUE)
返回:
Error in as.data.frame(y) : argument "y" is missing, with no default
7.as.data.frame(y)
6.as.data.frame(y)
5.nrow(y <- as.data.frame(y))
4.merge.data.frame(as.data.frame(x), as.data.frame(y), ...)
3.merge(as.data.frame(x), as.data.frame(y), ...)
2.merge.default(cat(ls(pattern = ".csv"), sep = ","), by = "individual", all
= TRUE)
1.merge(cat(ls(pattern = ".csv"), sep = ","), by = "individual", all = TRUE)
提前感谢您的帮助。
答案 0 :(得分:0)
如果需要在解决方案中使用ls(),则无法提供帮助。
但是,如果您只想合并一个完整的.csv文件夹,每个文件夹都应该通过一个公共变量合并在一起,那么您可以这样做:
setwd('Drive:/Folder/Subfolder')
fnms<-subset(dir(),substr(dir(),nchar(dir())-3,nchar(dir()))=='.csv')
x<-read.csv(fnms[1])
for (i in 2:length(fnms)){
temp<-read.csv(fnms[i])
x <- merge(x,temp, by = "individual", ###or whatever variable you're merging on
all = TRUE)
}