2017-03-29 2 views
0

Ich habe einige statische Daten im Datenrahmen static_data gespeichert. Das Ziel ist es, die data mit dem static_data zu verschmelzen, um die outputeffiziente Zusammenführung bei statischen Daten

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)) 

meinen Code zu erhalten, wird die folgende

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

und so ein. Was ist der beste Weg, um einen effizienten Code zu haben?

+0

@MrFlick ich Ihrem Vorschlag zustimmen. aber zuerst müssen Sie mit der Spalte A und dann mit der Spalte B zusammenführen. Ich möchte die Umbenennung so weit wie möglich vermeiden. – richpiana

+0

Benötigen Sie Ihre Daten wirklich im "Wide" -Format. Es wäre einfacher, Ihre Daten zu schmelzen und dann die Zusammenführung einmal durchzuführen. – MrFlick

+0

Ja, ich muss das Wide-Format in dem Sinne beibehalten, dass A und B IDs darstellen, die miteinander verknüpft sind – richpiana

Antwort

1

Sie können dies versuchen:

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 
Verwandte Themen