将多个 .csv 文件合并到一个数据框中,在新的第一列中包含文件名
Merge mutiple .cbs files into one data frame that includes the file names in a new first column
我在 R 中处理大量 .cbs 文件。我在这里找到了一段有用的代码(How do you read in multiple .txt files into R? 用户 Greg 的回复),我将其从 .txt 更改为 .cbs:
以下三行获取所有文件并制作一个 data.frame
"datafr",所有代码行在:
filelist = list.files(pattern = ".*.cbs")
假设用制表符分隔值 header:
datalist = lapply(filelist, function(x)read.table(x, header=T))
假设所有文件都相同header/columns:
datafr = do.call("rbind", datalist)
这对于将文件合并为一个文件非常有效 data.frame
,但是我还想包括新合并数据框中每一行的原始文件名称。理想情况下作为 data.frame
的新第一列。谁能帮我修改这段代码?
谢谢,
约翰
也许下面会做。未经测试,因为没有数据示例。
datalist = lapply(seq_along(datalist), function(i){
datalist[[i]]["filename"] <- filelist[[i]]
datalist[[i]]
})
我还应该提到,我和许多其他人更喜欢赋值运算符 <-
而不是 =
。
考虑 transform
:
datalist = lapply(filelist, function(x) transform(read.table(x, header=T), filename=x))
我在 R 中处理大量 .cbs 文件。我在这里找到了一段有用的代码(How do you read in multiple .txt files into R? 用户 Greg 的回复),我将其从 .txt 更改为 .cbs:
以下三行获取所有文件并制作一个 data.frame
"datafr",所有代码行在:
filelist = list.files(pattern = ".*.cbs")
假设用制表符分隔值 header:
datalist = lapply(filelist, function(x)read.table(x, header=T))
假设所有文件都相同header/columns:
datafr = do.call("rbind", datalist)
这对于将文件合并为一个文件非常有效 data.frame
,但是我还想包括新合并数据框中每一行的原始文件名称。理想情况下作为 data.frame
的新第一列。谁能帮我修改这段代码?
谢谢,
约翰
也许下面会做。未经测试,因为没有数据示例。
datalist = lapply(seq_along(datalist), function(i){
datalist[[i]]["filename"] <- filelist[[i]]
datalist[[i]]
})
我还应该提到,我和许多其他人更喜欢赋值运算符 <-
而不是 =
。
考虑 transform
:
datalist = lapply(filelist, function(x) transform(read.table(x, header=T), filename=x))