r - 如何在共享相同文件名的不同目录中合并(内部连接)数据框
问题描述
我有多个包含多个 csv 文件的目录。
dir1/file1.csv
dir1/file2.csv
和
dir2/file1.csv
dir2/file2.csv
dir2 包含 dir1 拥有的每个文件,等等。每个文件夹中有数千个文件。
dir1 中的所有文件与 dir2 中的所有文件具有相同的结构。在两个目录之间,文件共享 1 列,标题为“框架”。
因此,我的目标是对 dir1 中的所有文件执行 inner_join,这些文件在 dir2 中共享相同的确切文件名(基于共享的“框架”列)并将其输出到新目录中。
每个文件的文件将如下所示:
dir1 中的示例数据:
individual <- c("1","1","2","2","3","4","5","5")
x <- c(665,NA,NA,NA,NA,NA,663,665)
y <- c(-474.5,NA,NA,NA,NA,NA,-474.5,-472.5)
frame <- rep(1:8)
file1 <- data.frame(individual,x,y,frame)
dir2 中的示例数据:
datetime <- c("2016-01-01", "2016-01-02","2016-01-03","2016-01-04","2016-01-05","2016-01-06", "2016-01-07","2016-01-08","2016-01-09","2016-01-10")
frame <- rep(1:10)
file1 <- data.frame(datetime,frame)
数据之间的连接示例,
file1 <- inner_join(file1,file1,by = "frame").
重要的是,我想保留原始 csv 文件的相同名称。我有点坚持如何让它大规模工作(即在所有文件上执行,但只有当它们的名称匹配时)
我尝试使用@rentrop 编写的此链接中的修改后答案
directories <- c("path1/to/file1.csv", "path2/to/file1.csv")
files <- lapply(directories, list.files, pattern="*.csv", full.names = TRUE)
files <- lapply(files, sort)
dat <- Map(function(x,y) { inner_join(read.csv(x), read.csv(y), by = "frame") },
files[[1]], files[[2]])
这没有用,得到了
zero-length inputs cannot be mixed with those of non-zero length
非常感谢有关如何完成此任务的任何建议。谢谢!
解决方案
推荐阅读
- r - 将新 data.frame 中的行添加到 ggplot2
- matlab - 从 CSV 文件中读取双引号中包含的数值
- node.js - 无法从领英验证访问令牌
- oauth - 以 Gitlab 作为提供者的 Oauth / OpenID
- python - 如何使用 python 使用 OPC UA 协议从服务器到客户端进行通信
- excel - 从形状表加载图像表单时出错
- javascript - 如何在AngularJS中的组件之间绑定数据
- javascript - 如何使用正则表达式获取 url 中的路径
- corda - Corda - 使用其他消息代理?
- javascript - 这是一个保留字 - 函数中的错误,而不是返回时