Meine Frage ist: Ich habe einen Datenrahmen mit einigen Faktorvariablen. Ich möchte nun diesem Datenrahmen einen neuen Vektor zuweisen, der für jede Teilmenge dieser Faktorvariablen einen Index erstellt.Wie wird ein Zähler einer bestimmten Teilmenge eines data.frames zugewiesen, der durch eine Faktorkombination definiert ist?
data <-data.frame(fac1=factor(rep(1:2,5)), fac2=sample(letters[1:3],10,rep=T))
Gibt mir so etwas wie:
fac1 fac2
1 1 a
2 2 c
3 1 b
4 2 a
5 1 c
6 2 b
7 1 a
8 2 a
9 1 b
10 2 c
Und was ich will, ist eine Kombination Zähler, der das Auftreten eines jeden Faktorkombination zählt. Gefallen Sie diese
fac1 fac2 counter
1 1 a 1
2 2 c 1
3 1 b 1
4 2 a 1
5 1 c 1
6 2 b 1
7 1 a 2
8 2 a 2
9 1 b 2
10 1 a 3
Bisher dachte ich über tapply mit dem Zähler über alle Faktor-Kombinationen zu erhalten, die
counter <-tapply(data$fac1, list(data$fac1,data$fac2), function(x) 1:length(x))
gut funktioniert Aber ich weiß nicht, wie ich die Zählerliste zuordnen kann (zB nicht gelistet) zu den Kombinationen im Datenrahmen ohne ineffiziente Schleifen zu verwenden :)
es um sein muss oder wollen Sie einfach nur net zählt? Wenn Sie nur zählen möchten, kann die Tabelle (Einfügen (Daten $ fac1, data $ fac2, sep = "-")) hilfreich sein. – screechOwl
Hallo! Innerhalb jeder fac1 x fac2-Kombination spielt die Reihenfolge eine Rolle. (Man kann sich das so vorstellen wie mal eine Person "fac1" den Buchstaben "fac2" sah) – JBJ
Du könntest die gleiche Grundstrategie verwenden, aber von 'tapply' auf' ddply' von ** plyr ** umschalten, oder falls du Daten sind riesig und Leistung ist ein Problem, "data.table". – joran