我有几个具有相同结构的不同 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 是新的索引列,表明:第一个和第二个观测值来自 files[1](第一个 .csv 文件);第三个和第四个观察结果来自文件[1](第一个 .csv 文件);等等。
这是一个增强版本尼古拉斯的回答它添加文件名而不是数字:
x2csv <- rbindlist(lapply(files, fread), idcol = "origin")
x2csv[, origin := factor(origin, labels = basename(files))]
-
fread()
uses stringsAsFactors = FALSE
默认情况下,这样我们可以保存一些击键
- Also
fill = TRUE
仅当我们想要读取具有不同结构的文件时才需要,例如不同的位置、名称或列数
- id col可以命名(默认为
.id
) 并填充列表元素的序列号。
- 然后,这个数字被转换成一个因子,其级别用文件名标记。文件名可能比单纯的数字更容易记住。
basename()
删除文件名中的路径。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)