Moje pytanie brzmi: Mam ramkę danych z niektórymi zmiennymi czynnikowymi. Teraz chcę przypisać nowy wektor do tej ramki danych, która tworzy indeks dla każdego podzbioru tych zmiennych czynnikowych.Jak przypisać licznik do określonego podzbioru data.frame, który jest zdefiniowany przez kombinację czynników?
data <-data.frame(fac1=factor(rep(1:2,5)), fac2=sample(letters[1:3],10,rep=T))
Daje mi coś takiego:
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
i co chcę to kombinacja licznik który liczy występowania każdej kombinacji czynników. Podoba Ci się to
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
Dotychczas myślałem o użyciu Tapply dostać licznik nad wszystkimi czynnik kombinacjach, które działa prawidłowo
counter <-tapply(data$fac1, list(data$fac1,data$fac2), function(x) 1:length(x))
Ale nie wiem, jak mogę przypisać listę licznika (np niepubliczny) do kombinacji w ramce danych bez użycia nieefektywnej pętli :)
Czy trzeba być w porządku czy po prostu chcą liczy netto? Jeśli chcesz tylko zliczać, może pomóc tabela (wklej (dane $ fac1, dane $ fac2, sep = "-")). – screechOwl
Cześć! W każdej kombinacji fac1 x fac2 kolejność ma znaczenie. (Można pomyśleć o tym, jak razy osoba "fac1" zobaczyła literę "fac2"). – JBJ
Możesz użyć tej samej podstawowej strategii, ale przełącz się z "tapply" na "ddply" z ** plyr **, lub jeśli dane są ogromne, a wydajność to problem, "data.table". – joran