我对 R 比较陌生,我对数据框有疑问。我有一个很长的数据框(df1),其中包含一些坐标 xy 和值 z。我有一个较短的数据框(df2),具有相同的列但行数较少。当 df2 中的 xy 相等时,我想替换 df1 中的值。
x = c(1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4)
y = c(1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4)
z = c(8, 5, 3, 1, 2, 6, 8, 5, 3, 2, 8, 4, 4, 6, 2, 1)
df1 = data.frame(x, y, z)
x1=c(1,3,4)
y1=c(2,1,4)
z1=c(58,37,23)
df2=data.frame(x1,y1,z1)
names(df2) <- c("x", "y", "z")
我认为我可以将 ifelse 函数用作:
df1$znew<-ifelse((df1[,1]== df2[,1])&(df1[,2]==df2[,2]), df2[,3], df1[,3])
但这两个物体的尺寸不一样。
我尝试使用循环,因此它分析每一行以比较 x 和 y,然后决定使用什么 z,但我无法使其工作。
最后,我想要一个带有新变量 z 的数据框来比较这些值并证实它确实改变了这些值。我的最终数据框如下所示:
znew = c(8,58,3,1,2,6,8,5,37,2,8,4,4,6,2,23)
我真的很感激任何帮助,如果其他人发布了类似的问题,我很抱歉,我整天都在试图弄清楚,但我找不到任何适合我的例子。