r - 在R中读取许多csv文件时添加与原始文件对应的列
问题描述
我正在将列表中的 csv 文件读入一个数据集中,使用
x <- do.call(rbind, lapply(list, fread))
我想添加一列,x
其中指示与每一行对应的文件的名称。
list
看起来像这样:
[[1]] '~/amsterdam.csv'
[[2]] '~/atlanta.csv'
[[3]] '~/bangalore.csv'
我想x
看起来像这样
V1 V2 city
2.5 3.4 '~/amsterdam.csv'
5.4 1.1 '~/bangalore.csv'
3.4 2.9 '~/atlanta.csv'
0.5 9.8 '~/bangalore.csv'
有没有办法使用我使用的命令将 x 的每一行链接到它所源自的文件?
我目前正在使用循环来执行此操作(读取文件,然后添加与文件名对应的列,然后将所有文件绑定在一起),但我想知道是否有更快更清洁的方法来做到这一点。
解决方案
如果您使用的是data.table
tryrbindlist
而不是 .您可以使用参数do.call(rbind...
添加一个新列,该参数将为每个数据帧提供一个索引,稍后可以从. 另请注意,这是 R 中的内部函数,最好避免将其用作变量名。City
idcol
list
list
library(data.table)
x <- rbindlist(lapply(list, fread), idcol = "City")
x[, City := basename(list)[City]]
推荐阅读
- kubernetes - k8s HorizontalPodAutoscaler - 在限制上设置目标,而不是请求
- python - 通过从装饰器内部调用类方法来修改类属性
- r - 在R中使用aea投影将纬度/经度坐标绘制到正式类栅格图层(因子)地图中?
- java - Spring Boot (2.3.6.RELEASE) 使用 RestTemplate 和 Unwrap Root 时反序列化失败
- php - 使用 LengthAwarePaginator 时如何返回 Eloqent 模型而不是数组?
- sql - 根据列的总和计算或查找用户具有最高值的次数
- python - 如何一个班轮访问列表中的numpy数组?
- python - Folium 中 HeatMapWithTime 后面的图层排序
- java - 有没有办法通过使用 mongodb 聚合和投影来返回完全不同的数据结构?
- python - 在调用 'os.system()' 之前只运行一些语句