2017-03-29 28 views
0

我有一些靜態數據存儲在數據框static_data。我們的目標是合併datastatic_data以獲得output靜態數據高效合併

data <- data.frame(A = c("a","b","c","d","e"),B=c("a","b","b","e","e")) 

static_data <- data.frame(I=c("a","b","c","d","e"),Info=c(1,2,3,4,5)) 

output <- data.frame(A = c("a","b","c","d","e"),B=c("a","b","b","e","e"), 
        AI=c(1,2,3,4,5),BI=c(1,2,2,5,5)) 

我的代碼如下

colnames(data) <- c("I","B") 
temp <- merge(data, static_data,by="I) 

等一個。有效代碼的最佳方式是什麼?

+0

@MrFlick我對你的建議達成一致。但首先必須使用列A然後列B進行合併。我想盡可能避免重命名 – richpiana

+0

您真的需要「寬」格式的數據嗎?將數據融化然後再合併一次會更容易。 – MrFlick

+0

是的,我需要保持寬格式的意義,A和B代表鏈接在一起的ID – richpiana

回答

1

你可以試試這個:

mg <- merge(data, static_data, by.x = "A", by.y = "I") 
cbind(mg, BI=merge(data, static_data, by.x = "B", by.y = "I")[,3]) 

# A B Info BI 
#1 a a 1 1 
#2 b b 2 2 
#3 c b 3 2 
#4 d e 4 5 
#5 e e 5 5