R 合并两个匹配行/列的数据帧

R 合并两个匹配行/列的数据帧,r,loops,dplyr,merge,R,Loops,Dplyr,Merge,给定两个不同维度的数据帧,我如何将一个数据帧合并到另一个数据帧之上,保持较大df的维度,并在需要的地方插入较小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&

给定两个不同维度的数据帧,我如何将一个数据帧合并到另一个数据帧之上,保持较大df的维度,并在需要的地方插入较小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)
Z%
选择(-Afghanistan.y,-Afghanistan.x)

为了便于参考,我的表的行/列名是国家/地区。此方法有效,但一次只替换一列,循环是否可以正确输入所有列的所有数据?

您可以使用
x
的维度子集
y
,并分配-

y[1:nrow(x), 1:ncol(x)] <- x
y

y[1:nrow(x),1:ncol(x)]按照@ronak shah给出的答案,如果您的
y
数据框具有
x
的所有行名和列名(加上一些不属于
x
的行名和列名),那么您可以简单地按行名和列名进行子集,以适应
x
中的
x

创建示例矩阵:

x <- as.data.frame(matrix(data = 1:3, nrow = 5, ncol = 6))
y <- as.data.frame(matrix(data = NA, nrow = 10, ncol = 10))
现在,在
y
内安装
x

y[row.names(x), colnames(x)] <- x

y[row.names(x),colnames(x)]
merge
用于基于一个或多个公共列组合两个
data.frame
s。当你说“一个在另一个之上”时,对我来说这听起来像是
rbind
(或者
dplyr::bind_rows
,尽管这一个只用于帧)。不管怎样,你的
x
y
都是矩阵(没有列名),然后你尝试
合并
x
y
两个对象在一个列名
“Country”
,所以我不确定我们应该在这里使用什么。我的示例x和y是矩阵,我应该创建数据帧,那是我的错误
row.names(x)=c("a", "b", "c", "d", "e")
colnames(x)=c("V1", "V2", "V3", "V5", "V6", "V8")
row.names(y)=c("1",  "2",  "a",  "b",  "5",  "c",  "7",  "d",  "9",  "e")
y[row.names(x), colnames(x)] <- x