【发布时间】:2021-02-10 02:22:03
【问题描述】:
我有许多 CSV,我想在其中创建一个 Id 列并使用 CSV 的名称填充该 Id 列。
这是当前 B1.csv 的示例:
Date_Time Temp
5/5/2020 11:00 89
5/5/2020 11:30 97
5/5/2020 12:00 108
我想看看:
Id Date_Time Temp
B1 5/5/2020 11:00 89
B1 5/5/2020 11:30 97
B1 5/5/2020 12:00 108
代码:
temp = list.files("C:\\Users\\kujld016\\**\\r",
pattern = "*.csv", full.name=T)
myfiles = lapply(temp, read.csv)
for( i in seq_along(myfiles)){
myfiles[[i]]$Id<-NOT sure what to do here
write.csv(myfiles[[i]], paste0("C:\\Users\\***\\out\\",myfiles[[i]][1,1],'.csv'), row.names=F)
}
*我不确定如何创建可重现的示例。我已经包括了我能想到的上面可能需要的所有内容。谢谢
【问题讨论】:
-
myfiles[[i]]$Id <- temp[i]?或者,如果需要,可以使用一点正则表达式从完整文件路径中提取文件名(如果包含在temp中) -
这成功了!但包括整个文件路径。我需要在该文件路径中指定 CSV 名称,然后将其删除。谢谢
-
您可以删除路径中最后一个
/之前的所有内容 -file_name = sub(".*/", "", temp),然后使用file_name[i]。 -
我能够使用 substr(temp[i], 75,77) 更接近我所需要的。但是,我的 CSV 是数字 B1 - B100,因此子字符串规范因数字而异。
-
如果您发布一些文件路径示例,那么我可以更有效地提供帮助。另一种选择是使用新的
list.files调用来补充您拥有的调用,也许是file_names = list.files("C:\\Users\\kujld016\\**\\r", pattern = "*.csv", full.name = FALSE)