2016-11-16 90 views
0

對於數據幀#1列中的每個條目,我想查看該值是否在數據幀#2中,然後從特定數據幀中獲取一個值第二個數據幀的列,否則爲0,如果無法找到它。有沒有辦法使用其中的一個* apply函數呢?下面R:通過索引來自另一個數據幀的值索引第二個數據幀的值

df1 <- data.frame(
    key1 = c("A","B","C","E") 
) 

df2 <- data.frame(
    key2 = c("X", "A", "C", "D", "E"), 
    val2 = as.integer(c('1','2','23','41','99')) 
) 

#Answer should be a vector like this: 
x <- as.integer(c('2','0','23','99')) 

回答

2

的代碼將讓你的結果你的榜樣,但如果keydf2出現一次超過它會只返回的第一個結果。如果這不是您想要的,請描述該場景所需的輸出。

x <- as.integer(df2[["val2"]][match(df1[["key1"]], df2[["key2"]])]) 
x[is.na(x)] <- as.integer(0) 

match返回其第一個參數的匹配位置的第二個位置的位置。 match將返回NA表示不匹配,當它索引到df2[["val2"]]時將創建一個NA值,因此必須將這些值更改爲0才能獲得最終結果。

+0

謝謝!這將做我所需要的。 – Boost

+0

很高興爲您提供幫助。如果解決了問題,接受答案可以讓人們知道找到了解決方案。 – Barker

相關問題