2016-06-08 2 views
2

내가 가지고 dataframe 같은 :조건에 따라 다른 dataframe에 값을 dataframe의 특정 값을 교체

> 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 

그리고 다른 dataframe :

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의 값은 B2의 값이 p이지만 두 데이터 프레임에서 모두 id이고 값이 df$Source == "Ap" 인 값에 대해서만 적용됩니다.

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들에 의해 전체 열을 교체하는 방법을 알고 있지만 난 그냥 루프에 대해 언급 한 조건에 따라 그들 (그리고없이 교체 할 :

마지막 dataframe는해야한다 ...). 이것을 어떻게 할 수 있습니까? `에서

+0

당신의 ID가 df'와'의 정의와 같이 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

관련 문제