2016-10-16 4 views
-1

Ich bin ein R-Neuling, und ich kann diesen nicht bekommen: Ich möchte Faktoren in einem Datenrahmen aggregieren, indem ich Vorkommen eines bestimmten Wertes zähle (in diesem Fall des Wertes "Ja"). Es gibt viele N/Wie auch, wie folgt:R: aggregierter Datenrahmen, bedingte Zählfaktorvariablen

Aktuell:

Agg Factor1 Factor2 Factor3 
A1 Yes  Yes  Yes 
A1 Yes  Yes  No 
A1 Yes  N/A  No 
A1 N/A  No  N/A 
A2 Yes  Yes  No 
A2 N/A  Yes  N/A 
A2 No  N/A  N/A 

Wunschergebnis:

Agg F1 F2 F3 
A1 3 2 1 
A2 1 2 0 

Idealer ich eine Antwort möchte ist Basis R, wie ich Ich versuche zu lernen ... natürlich, wenn es eine einfachere Lösung gibt, die ein Paket verwendet, wäre ich auch interessiert.

Daten

dd <- read.table(header = TRUE, na.strings = "N/A", text = 
"Agg Factor1 Factor2 Factor3 
A1 Yes  Yes  Yes 
A1 Yes  Yes  No 
A1 Yes  N/A  No 
A1 N/A  No  N/A 
A2 Yes  Yes  No 
A2 No  Yes  N/A 
A2 N/A  No  N/A") 
+0

Mmh, das (@ G.Grothendieck Vorschlag) scheint nicht zu funktionieren, denke ich, weil es in den Daten N/As gibt. Die Summen sind alle N/A. Gleiches mit @ rawrs Vorschlag. – Nick

+1

Konvertieren Sie die Spalten in Zeichen und verwenden Sie dann die @ rawr-Lösung: 'dd [] <- lapply (dd, as.character)'. Beachten Sie, dass in 'dd' keine NAs vorhanden sind, da N/A eine Faktorstufe und keine NA ist. Wenn Sie es als N/A verwenden wollten, müssen Sie Ihre 'read.table' Anweisung ändern und' sum (..., na.rm = TRUE) 'verwenden. –

+0

Danke für Ihre Hilfe. ", na.rm = TRUE" hat es getan, und ich habe die obige read.table-Anweisung korrigiert. – Nick

Antwort

0

Vergleiche gegen den Faktor Arbeit gegen die Etiketten, so wird dies unabhängig arbeiten, ob der Faktor Spalten sind Faktoren oder Strings:

aggregate(dd[-1L]=='Yes',dd[1L],sum,na.rm=T); 
## Agg Factor1 Factor2 Factor3 
## 1 A1  3  2  1 
## 2 A2  1  2  0 
+0

Ja, mein Problem waren die häufigen NAs. Ich konnte das Holz für die Bäume nicht sehen. Das Hinzufügen von 'na.rm = TRUE' hat mich dorthin gebracht. Vielen Dank. – Nick