r - 根据文件在 R 中的名称将文件组合到数据帧中
问题描述
我目前有一个向量,其中包含指向文件的路径列表,例如:
files <- c("C:/Users/Me/Desktop/cc/canada/2016/Ontario.BRU",
"C:/Users/Me/Desktop/cc/canada/2017/Ontario.BRU",
"C:/Users/Me/Desktop/cc/canada/2018/Ottawa.BRU",
"C:/Users/Me/Desktop/cc/canada/2018/Ontario.BRU")
我想将同一个城市结束的文件一个接一个地组合到同一个数据框中。如果只有一个城市出现,我仍然会将数据框保存为最后的 csv 文件。这是我刚开始的代码:
cad<-NULL
for(b in 1:length(files)){
country<-sub(".*/ *(.*?) */[[:digit:]].*", "\\1", files[b])
if(country=="canada"){
cad<-c(cad, files[b])
}
cad_cities <- unique((sub(".*/ *(.*?) *.BRU.*", "\\1", cad)))
for(c in 1:length(cad_cities)){
city<-sub(".*/ *(.*?) *.BRU.*", "\\1", cad)
}
}
我在这部分之后被卡住了。谢谢你。
编辑:数据文件示例
2018,1,0,9999,-20.70,-23.00,-22.10,81.00,0.00,000,-991,-991,-991,-2.41,-991,-991,8.90,353,97.36,-991,-991,19.00,-991
2018,1,100,9999,-21.40,-22.70,-22.00,80.00,0.00,100,-991,-991,-991,-2.42,-991,-991,7.80,264,97.36,-991,-991,18.00,-991
2018,1,200,9999,-21.40,-22.50,-21.90,79.00,0.00,200,-991,-991,-991,-2.42,-991,-991,10.30,270,97.34,-991,-991,19.00,-991
2018,1,300,9999,-20.80,-21.90,-21.40,78.00,0.00,300,-991,-991,-991,-2.43,-991,-991,10.70,263,97.32,-991,-991,18.00,-991
解决方案
可能类似于以下内容。(首先,运行问题中的代码。)
未经测试,因为没有数据文件。
for(cad in cad_cities){
tmp <- grep(cad, files, value = TRUE)
tmp <- lapply(tmp, read.table, sep = ",")
tmp <- do.call(rbind, tmp)
write.csv(tmp, file = paste0(cad, ".csv"), row.names = FALSE)
}
rm(tmp) # tidy up
推荐阅读
- javascript - 不带引号的 JSON 属性值
- php - 如果未在数据库中设置值,则不运行
- ios - GMT 中的当前日期与 DateFormatter
- flutter - 使用 BottomSheet 时未找到 Scaffold 小部件
- flutter - 如何在颤动中创建水平列表
- mysql - 如何修复 #1366 - 不正确的字符串值:'\xE6\x10\x00\x00\x01\x01...'
- .net-core - Prism 可以使用 .NET Core 的内置依赖注入吗?
- python - importlib.import_module 忽略在 __init__.py 中进行的重新导出
- macos-catalina - 如何在 macOS Catalina 上安装 gmp4
- html - extends - 如何忽略父级上的子级 CSS