r - 如何在R中对不同数据帧的同一列求和
问题描述
我有 4 个数据框,每个数据框的行数和列数完全相同。列 1、2、5 中的值在每个数据框中都是相同的。从这 4 个数据帧中,我想获得一个数据帧,其中第三和第四列(“pred1”和“pred2”)是通过对 4 个数据帧中的值求和来创建的。有可能这样做吗?这是我的数据框:
df1 = read.csv(fname1,header=FALSE,col.names=c("c1", "c2", "pred1", "pred2","c5")))
df2 = read.csv(fname2,header=FALSE,col.names=c("c1", "c2", "pred1", "pred2","c5")))
df3 = read.csv(fname3,header=FALSE,col.names=c("c1", "c2", "pred1", "pred2","c5")))
df4 = read.csv(fname4,header=FALSE,col.names=c("c1", "c2", "pred1", "pred2","c5")))
解决方案
怎么样
df5 <- df1
df5$pred1 <- df1$pred1 + df2$pred1 + df3$pred1 + df4$pred1
df5$pred2 <- df1$pred2 + df2$pred2 + df3$pred2 + df4$pred2
根据 Gregor 的建议,您还可以创建一个向量来存储要添加的列(如果有很多),然后像
cols = c("pred1", "pred2")
df5[, cols] = df1[, cols] + df2[, cols] + df3[, cols] + df4[, cols]
akrun 还提供了一个我不遵循的建议,但似乎它也适用于任意数量的数据帧(只需将 1:4 扩展到 1:n,其中 n 是最后一个 df 的数量)。
Reduce("+", lapply(mget(paste0('df', 1:4)), "[[", c("pred1", "pred2")))
推荐阅读
- python - 0 和 1 的 2D numpy 数组 - 单元格为 1 也将周围的 12x12 单元格设置为 1
- javascript - 如何将 JSON 从本地网站发送到 AWS IoT?
- matlab - 在 MacOS 的 Mex 文件中使用 OpenMP
- javascript - 动态生成的表格即使被清除也会不断增加
- r - R:在网页抓取多个页面时获取选择器的问题
- c# - C# 将对象绑定到 JSON 文件?
- flutter - 在颤振中使用两个异步调用只解决了一个
- http - 允许任何 CORS 来源 (*) 时是否应设置“Vary: Origin”?
- javascript - Fastify 模式验证不起作用。我是否以错误的方式配置了某些东西?
- asp.net - 如果列是主键的一部分,我可以删除它吗?