【发布时间】:2021-08-15 05:39:51
【问题描述】:
给定两个不同维度的数据框,我如何才能将一个合并到另一个之上,以保持较大 df 的维度并在需要的地方插入较小的数据。
x = matrix(data = 1:4, nrow = 20, ncol = 22)
y = matrix(data = NA, nrow = 26, ncol = 26)
像这样的东西,其中 Y 是一个完整的空白矩阵,X 是一个实际数据点的矩阵。我怎样才能合并它们,以便 X 的数据覆盖到 Y 的矩阵上
我尝试过类似的东西
Z<- merge(Y, X, by = "Country", all.x= TRUE)
但最终发生的事情是我得到一个列大小加倍的 DF,并将数据附加到 Y DF 的末尾。
我也试过了
library(dplyr)
Z<- merge(Y, X, by = "Country", all.x = T)
Z%>%
mutate(Afghanistan = ifelse(is.na(Afghanistan.x), Afghanistan.x, Afghanistan.y)) %>%
select(-Afghanistan.y, -Afghanistan.x)
作为参考,我的表格的行/列名称是国家/地区。此方法有效,但一次只能替换 1 列,是否可以循环正确输入所有列的所有数据?
【问题讨论】:
-
merge用于基于一个或多个公共列组合两个data.frames。当您说“一个在另一个之上” 时,对我来说这听起来像rbind(或dplyr::bind_rows,尽管这又是仅用于帧)。无论如何,您的x和y是矩阵(没有列名),然后您尝试在列名"Country"上使用merge两个对象X和Y,所以我不太确定我们应该在这里处理什么。 -
我的示例 x 和 y 是我应该创建数据框的矩阵,这是我的错误