我试图逐行比较两个数据帧,让我们说df1有4行,df2有3行:
df1 <- data.frame(x1=c('a','b','c','d'),x2=c(1,2,3,4))
df2 <- data.frame(x1=c('a','b','d'),x2=c(5,6,7))
我想通过逐行比较df1来变换df2:每次df2的column1中的第i行的值与df1的column1中的第i行的值不同时,我想添加一个新行df2使得在循环结束时,两个数据帧具有相同的行数,并且第一列完全相同 .
这意味着我希望df2在比较结束时看起来像这样:
df2 <- data.frame(x1=c('a','b','c','d'),x2=c(5,6,0,7))
我尝试用循环但是R返回错误
Ops.factor中的错误(df1 [i,1],df2 [i,1]):les niveaux des facteursdiffèrent“
for (i in 1:length(df2)){
if (df1[i,1]!=df2[i,1])
{df1<- rbind(df1[1:i,],df2[i,],df1[i+1,])}
}
1 回答
你想基本上做一个左连接:
那么如果你想
0
而不是NA