r - 如何合并r中列表中包含的数据帧中的行
问题描述
我有 3 个数据框列表,以这种方式列出 x、y 和 z
x
[1]
ID 1h 2h 3h
1 3 5 6
2 1 8 2
3 7 3 9
[2]
ID 1h 2h 3h
1 9 0 0
2 0 3 1
3 2 4 7
[3]
ID 1h 2h 3h
1 3 1 0
2 5 5 0
3 7 0 0
y
[1]
ID 1h 2h 3h
1 7 3 0
2 1 8 2
3 7 3 9
[2]
ID 1h 2h 3h
1 8 0 1
2 9 5 3
3 2 4 7
[3]
ID 1h 2h 3h
1 0 2 9
2 0 5 9
3 3 5 4
z
[1]
ID 1h 2h 3h
1 8 7 5
2 4 0 3
3 0 0 0
[2]
ID 1h 2h 3h
1 4 5 9
2 0 9 5
3 3 7 9
[3]
ID 1h 2h 3h
1 8 0 4
2 7 4 2
3 1 4 9
我希望结果采用 x 的第一个数据帧的 ID 并将其与第一个 y 数据帧的第一个 ID 和第一个 z 数据帧的第一个 ID 合并,看起来像这样,并对中的所有数据帧执行此操作列表:
ID1 [1]
x y z
1h 3 7 8
2h 5 3 7
3h 6 0 5
为了澄清更多,这里是每个列表的第三个数据框的第二个 ID 的示例
ID2 [3]
x y z
1h 5 0 7
2h 5 5 4
3h 0 9 2
最后还将它们导出为 csv 文件,其名称包含 ID 号(1,2 或 3)以及列表中的哪个项目([1]、[2] 或 [3])谢谢!
解决方案
如果我正确理解了您的问题,这应该可以解决问题。虽然不是最优雅的解决方案!
# function to extract the id's
extract_id <- function(x, y, z, id) {
x <- x[x$ID == id, -1]
y <- y[y$ID == id, -1]
z <- z[z$ID == id, -1]
id <- t(rbind(x, y, z))
colnames(id) <- c("x", "y", "z")
return(id)
}
# initialize new lists
ID1 <- list()
ID2 <- list()
ID3 <- list()
# loop over the data frames
for (a in 1:3) {
ID1[[a]] <- extract_id(x = x[[a]],
y = y[[a]],
z = z[[a]],
id = 1)
ID2[[a]] <- extract_id(x = x[[a]],
y = y[[a]],
z = z[[a]],
id = 2)
ID3[[a]] <- extract_id(x = x[[a]],
y = y[[a]],
z = z[[a]],
id = 3)
}
# show everything
ID1
ID2
Id3
推荐阅读
- twilio - 自动驾驶仪和 Studio 集成
- ruby-on-rails - Rails 6 - 如何使用旧的 sprocket 资产管道而不是 webpacker?
- javascript - 启用后单击触发器在禁用按钮上不起作用
- javascript - 删除了 Class 并希望将其添加回来
- constraints - QGIS3条目约束强制执行非空约束但允许零作为值
- unity3d - unity不显示对撞机
- javascript - 为什么这两个函数有这么大的性能差异?我改变的是价值声明的地方
- c# - 在 FormCollection MVC 表单中传递的复选框值
- javascript - 获取网页的 URL,不包括组件的 URL
- node.js - Nodejs后端如何摆脱html标签