2017-09-26 8 views
1

を更新します。は、2つのデータフレームを比較して、私は2つのデータフレームを比較する方法を理解する列

setdiff(df1,df2) 

しかし、列を比較するために、離れて存在し、それが異なる場合は、値を更新します。だから、(bは10に変更された)値の変化DF1に適用することを持ってする方法はあります私は

A | B 
------- 
a | 3 
b | 7 
c | 8 

を持っており、DF2に、私は

A | B 
------- 
a | 3 
b | 10 
c | 8 

を持ってDF1に言いますか?

+0

'df1 $ B'と' df2 $ B'を同じにしますか? – useR

+0

はい、ただ行全体をコピーし直したくないのですが、どのエントリが違うのかを正確に知りたいので、行bが7から10に変更されてからdf1を更新できます同じである。それが意味をなさないならば。 – Niall

答えて

1

あなたはちょうどこの操作を行うことができます。

df1 = data.frame(A = c("a", "b", "c"), 
       B = c(3, 7, 8)) 

df2 = data.frame(A = c("a", "b", "c"), 
       B = c(3, 10, 8)) 


diff_index = which(df1$B != df2$B) 
df1$B[diff_index] = df2$B[diff_index] 

diff_indexdf1$B等しくないdf2$Bに、インデックスがdf2$B

+0

ありがとうございます – Niall

0

DF1 = data.frameに何があるかとdf1$Bを交換することを使用してインデックスを抽出する(A =文字[1:3]、b = c(3,7,8))

df2 = data.frame(a = letters [1:3]、b = c(3,10,8))

df1$b[!(df1$b %in% df2$b)]=df2$b[!(df1$b %in% df2$b)] 
+0

これは、変更された行がわからないという点で 'df1 $ B = df2 $ B'を設定するのと同じです。 – useR

関連する問題