我有几个不同的csv文件具有相同的结构。我使用fread将它们读入R,然后使用rbindlist()
将它们组合成更大的数据集。
files <- list.files( pattern = "*.csv" );
x2csv <- rbindlist( lapply(files, fread, stringsAsFactors=FALSE), fill = TRUE )
代码工作正常。但是,我想添加一个填充数字的列,以指示观察来自哪个csv文件。例如,输出应为:
V1 V2 V3 C1
1: 0 0.2859163 0.55848521 1
2: 1 1.1616298 0.87571349 1
3: 2 2.1122510 0.95062116 2
4: 3 2.6832013 0.57095035 2
5: 4 2.9117493 0.22854804 2
6: 5 2.9886040 0.07685464 3
其中C1是新的索引列,告诉:第一个和第二个观察来自文件[1](第一个.csv文件);第三和第四个观察来自文件[1](第一个.csv文件);等等。
答案 0 :(得分:4)
这是Nicolás' answer的增强版,它添加文件名而不是数字:
x2csv <- rbindlist(lapply(files, fread), idcol = "origin")
x2csv[, origin := factor(origin, labels = basename(files))]
fread()
默认使用stringsAsFactors = FALSE
,因此我们可以保存一些按键fill = TRUE
.id
),并使用list元素的序列号填充。basename()
从文件名中删除路径。答案 1 :(得分:0)
您只缺少idcol
的{{1}}参数。运行:
rbindlist()