Я импортировал данные интервью из файла SPSS .SAV как data.frame
, и теперь я пытаюсь создать частотную таблицу на основе номера вопроса и места опроса. Вот пример data.frame
:R Таблица частот из нескольких категориальных переменных
loc<-c("city1","city2","city1","city2","city1","city1","city2","city2","city1","city2")
q1<-c("YES","YES","NO","MAYBE","NO","NO","YES","NO","MAYBE","MAYBE")
q2<-c("YES","NO","MAYBE","YES","NO","MAYBE","MAYBE","YES","YES","NO")
q3<-c("NO","NO","NO","NO","YES","YES","MAYBE","MAYBE","NO","MAYBE")
df<-data.frame(loc,q1,q2,q3)
df
loc q1 q2 q3
1 city1 YES YES NO
2 city2 YES NO NO
3 city1 NO MAYBE NO
4 city2 MAYBE YES NO
5 city1 NO NO YES
6 city1 NO MAYBE YES
7 city2 YES MAYBE MAYBE
8 city2 NO YES MAYBE
9 city1 MAYBE YES NO
10 city2 MAYBE NO MAYBE
Теперь я хотел бы подсчитать количество появлений для каждого варианта ответа "YES","NO","MAYBE"
в соответствии с вопросительным номером "q1","q2","q3"
и расположение "city1","city"
. Полученный data.frame
должен выглядеть следующим образом:
loc quest answ freq
1 city1 q1 YES 1
2 city1 q1 NO 3
3 city1 q1 MAYBE 1
4 city2 q1 YES 2
5 city2 q1 NO 1
6 city2 q1 MAYBE 2
7 city1 q2 YES 2
8 city1 q2 NO 1
9 city1 q2 MAYBE 2
10 city2 q2 YES 2
11 city2 q2 NO 2
12 city2 q2 MAYBE 1
13 city1 q3 YES 2
14 city1 q3 NO 3
15 city1 q3 MAYBE 0
16 city2 q3 YES 0
17 city2 q3 NO 2
18 city2 q3 MAYBE 3
До сих пор я играл с count()
, ddply()
и summarise()
из plyr
пакета не повезло. Мое текущее решение действительно хакерское и включает в себя разделение df
на loc
, создавая частотную таблицу с as.data.frame(summary(df_city1))
, извлекая частоту из сводной строки и объединяя сводку data.frame
s от city1
и city2
обратно вместе. Я предполагаю, что должно быть более легкое/более элегантное решение.
Спасибо @akrun, однако ваше решение не дает ожидаемого результата. Теперь для каждого подсчета дополнительная строка защищена до «res». –
@viktor_r Я забыл «уникальный». Теперь он должен работать – akrun