2017-03-29 25 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