2016-07-24 16 views
-1

Ich habe verschiedene Datenrahmen wie:Aggregieren Faktoren unterschiedlicher Länge Datenrahmen

Var1 "Bananas" "Apples" "Oranges" 
Freq "2"  "2"  "1"    


Var2 "Bananas" "Carrots" "Strawberries" "Apples" 
Freq "3"  "2"  "3"   "4"    

und als Ausgang würde Ich mag einen Datenrahmen/table/etwas ähnliches, das Auftreten jeden Eingangsdatenrahmen zu geben, einschließlich der 0 Ereignisse in einem schöner Überblick. So etwas wie:

Var  "Bananas" "Apples" "Oranges" "Carrots" "Strawberries" 
Sample1 "2"  "2"  "1"  "0"   "0" 
Sample2 "3"  "4"  "0"  "2"   "3" 

kann ich nicht ganz eine Lösung herauszufinden, zumal data.frames nicht für unterschiedliche Längen erlauben.

+0

Haben Sie sich 'merge' angeschaut? – dayne

+1

Diese sehen nicht wie Datenrahmen aus. Ein reproduzierbares Beispiel wäre Swell. –

Antwort

1

Beachten Sie, dass NA und 0 sehr verschiedene Dinge bedeuten. Werfen Sie einen Blick auf die Hilfedatei zu ?dplyr::join

library(dplyr) 
df1 <- data.frame(Var1 =c("Bananas", "Apples", "Oranges"), 
      Freq =c(2,2,1)) 
df2 <- data.frame(Var1 =c("Bananas", "Carrots", 
          "Strawberries", "Apples"), 
        Freq =c(3,2,3,4)) 
full_join(df1,df2, by = "Var1") 
+0

Es ist in meiner ursprünglichen Antwort enthalten, um zu sehen? Dplyr :: Join, aber ich bearbeitet den Funktionsaufruf, um die Bibliothek anzugeben, aber ich denke, ich hätte klarer sein können. – shayaa

+0

'::' lädt die Bibliothek, aber ich verstehe Ihren Standpunkt. Es ist wahrscheinlich für einen Anfänger zugänglicher, der von der Frage offensichtlich ist. – shayaa

+0

danke. Dies löste es für zwei Datenrahmen. Gibt es eine mögliche Erweiterung auf mehrere? – heffalump

0

Sie sollten einen Blick auf ?merge nehmen:

set.seed(1234) 
dat1 <- data.frame(var1 = LETTERS[1:5], freq = sample(1:100, 5)) 
dat2 <- data.frame(var2 = LETTERS[3:7], freq = sample(1:100, 5)) 

res <- merge(dat1, dat2, by.x = "var1", by.y = "var2", all = TRUE) 
res[is.na(res)] <- 0 
res 
# var1 freq.x freq.y 
# 1 A  12  0 
# 2 B  62  0 
# 3 C  60  65 
# 4 D  61  1 
# 5 E  83  23 
# 6 F  0 100 
# 7 G  0  50 
+0

Was passiert, wenn die Daten vor dem Zusammenführen in den Daten enthalten sind? Du hast gerade auch * sie * auf '0' geändert. –

+0

@RichardScriven Messepunkt - Ich wollte wirklich nur illustrieren, wie "Fusion" dem OP helfen könnte. Wenn das OP seine Frage klärt, werde ich entweder die Antwort löschen oder aktualisieren. – dayne

Verwandte Themen