2016-06-08 10 views
2

我有一個數據幀,如:在另一個數據幀,基於條件與值替換數據幀的某些值

> df <- data.frame(id=c(015,335,625,789), B=c(8,19,8,6), C=c(4,1,4,6), Source=c("Gk", "Ap", "Ap", "Kh")) 

> df 

    id B C Source 
1 015 8 4  Gk 
2 335 19 1  Ap 
3 625 8 4  Ap 
4 789 6 6  Kh 

而另一數據框:

p <- data.frame(id=c(335,625, 789), B2 = c(5,3,4)) 
p 

    id B2 
1 335 5 
2 625 3 
3 789 4 

我想在B列替換那些值的df的值爲B2p,但僅限於那些在數據框和df$Source == "Ap"中都有相同id的值。

最後的數據幀應該是:

id B C Source 
1 015 8 4  Gk 
2 335 5 1  Ap 
3 625 3 4  Ap 
4 789 6 6  Kh 

我知道如何更換由零或NA S,等整列,但我只是想以取代那些按照提到的條件(並沒有for循環...)。我怎樣才能做到這一點?

+0

在'df'你的ID是不一樣'id'在df'的'定義。請編輯這個。 –

回答

1

的一種方法是,

df[df$Source == "Ap", "B"] <- p[p$id %in% df[df$Source == "Ap", "id"] , "B2"] 


# id B C Source 
#1 15 8 4  Gk 
#2 335 5 1  Ap 
#3 625 3 4  Ap 
#4 789 6 6  Kh 
+1

這正是我所期待的。謝謝! – LRD

相關問題