Mam dane ankietowe, w których kolumny odpowiadają pozycjom i wierszom odpowiadającym klientom, mówiącym o prawdopodobieństwie zakupu każdego przedmiotu. Wygląda to tak:Bardziej efektywny sposób na uzyskanie zliczeń częstotliwości w kolumnach ramki danych
item1 = c("Likely", "Unlikely", "Very Likely","Likely")
item2 = c("Likely", "Unlikely", "Very Likely","Unlikely")
item3 = c("Very Likely", "Unlikely", "Very Likely","Likely")
df = data.frame(item1, item2, item3)
Chcę tabeli podsumowującej podając odsetek każdej odpowiedzi dla każdej pozycji. W tej chwili używam table() na każdej kolumnie dla tego procesu i jego wiele kodu do manipulowania. Jak mogę to zrobić za pomocą plyr lub zastosować lub coś szybciej?
Aktualny rozwiązanie:
d1<-as.data.frame(table(df$item1))
d1$item1_percent<- d1$Freq/sum(d1$Freq)
names(d1)<-c("Response","item1_freqs","item1_percent")
d2<-as.data.frame(table(df$item2))
d2$item2_percent<- d2$Freq/sum(d2$Freq)
names(d2)<-c("Response","item2_freqs","item2_percent")
d3<-as.data.frame(table(df$item3))
d3$item3_percent<- d3$Freq/sum(d3$Freq)
names(d3)<-c("Response","item3_freqs","item3_percent")
results<-cbind(d1,d2[,2:3],d3[,2:3])
Uwaga I naprawdę nie trzeba liczniki FREQ, tylko procenty.
Z góry dziękuję!
'lapply (DF, function (x) prop.table (tabela (x))) ' – user20650