で別のデータフレームを使用して1つのデータフレームから複数の列の値を置き換えますこんにちは以下のように私は2つのデータフレームを持っている条件
ID x y
2 d NA
3 NA e
と私はこのような結果の後に午前:
df1:
ID x y z
1 a b c
2 a b c
3 a b c
4 a b c
とDF2 :
DF1:
ID x y z
1 a b c
2 d b c
3 a e c
4 a b c
他の投稿のようにマッチ機能を使用しようとしていますが、私のdf1データフレームがdf2のNA値で置き換えられているという問題が続きます。 これはあなたのコードは私のために動作しませんでした
for (i in names(df2)[2:length(names(df2))]) {
df1[i] <- df2[match(df1$ID, df2$ID)]
}
おかげ
これは、dplyrにまだ存在しない、(https://github.com/tidyverse/tidyr/issues/183)更新が参加]でありますdf2%>%full_join(df1、by = 'ID'、接尾辞= c( ''、 '.1'))%>%mutate(x =合体) (x、x.1)、y =合体(y、y.1))%>%select(-x.1、-y.1)%>%arrange(ID) 'となります。 'df3 < - merge(df2、df1、by = 'ID'、all = TRUE、suffixes = c( ''、 '.1'));あなたが好きなら、ベースRで同じことをすることができます。 df3 $ x [is.na(df3 $ x)] < - df3 $ x.1 [is.na(df3 $ x)]; df3 $ y [is.na(df3 $ y)] < - df3 $ y.1 [is.na(df3 $ y)]; df3 [c( 'x.1'、 'y.1')] < - NULL; df3' – alistaire