我有80个单独的.csv文件,这些文件具有相同的列和标题,我可以使用以下命令将其作为一个数据框导入和rbind:
file_names <- dir("~/Desktop/data")
df <- do.call(rbind,lapply(file_names,read.csv))
但我想添加一个新变量(“name”),用于标识每个观察来自哪个.csv文件。因此,例如,对于来自'NY.csv'文件的所有观察结果,此变量“name”将为“NY”,对于来自'DC.csv'文件的所有观察结果,此变量将为“DC”等... 有没有办法在不在每个.csv上手动添加这个新列的情况下执行此操作?谢谢!
答案 0 :(得分:2)
这应该这样做:
file_names <- dir("~/Desktop/data")
df <- do.call(rbind, lapply(file_names, function(x) cbind(read.csv(x), name=strsplit(x,'\\.')[[1]][1])))