Частота подсчета порядковых переменных - PullRequest
0 голосов
/ 07 февраля 2019

У меня довольно внушительный вопросник (2000 участников), который разбит на 86 географических регионов (KPG).Это будет частью более широкого исследования изменений в землепользовании, поэтому мне нужно визуализировать частоту каждого ответа для каждой КПГ, чтобы «почувствовать мои данные».ответы - это вопросники, то есть порядковые или номинальные данные (которые компания, занимающаяся онлайн-опросом, превращает в числа).

 KPG Q1 Q2 Q3
1  112 -1  5  4
2  112  5  5  4
3  112  1  5  4
4  112  2  5  4
5  111  3  3  4
6  111  4  3 -1
7  111  2  3  2
8  111  2  3  3
9  111  2  3  5
10 111  2  3  5
11 113  2  3  5
12 113  2 -1  5
13 113  1  2  5
14 113 -1  2  5
15 113 -1  5  5
16 113  4  2  5

plot(table(test$Q1))

дает мне счетчик частоты для вопроса 1 по ВСЕМ КПГ

Теперь, как мне разбить этот график на каждую КПГ?

plot(table(Q1~KPG, data="test") 

заканчивается ошибкой, которая, как я думал, будет.Но я не могу понять, как получить правильный график.

Мне (с помощью stackoverflow) удалось получить подсчет частоты

FREQTEST<-do.call("cbind", lapply(names(test[-1]), function(x) { temp <- as.data.frame.matrix(table(test[["KPG"]], test[[x]])); setNames(temp, paste0(x, names(temp))) }))

Результаты вправильный подсчет частоты для всех вопросов по коэффициенту группировки (KPG).

Q1-1 Q11 Q12 Q13 Q14 Q15 Q2-1 Q22 Q23 Q25 Q3-1 Q32 Q33 Q34 Q35
111    0   0   4   1   1   0    0   0   6   0    1   1   1   1   2
112    1   1   1   0   0   1    0   0   0   4    0   0   0   4   0
113    2   1   2   0   1   0    1   3   1   1    0   0   0   0   6

Так что я мог бы поработать и с этим

Я ожидаю что-то вроде диаграммы, с одним столбцом на ответ,где высота результатов каждого ответа - это частота, с которой был дан ответ.

1 Ответ

0 голосов
/ 07 февраля 2019

Может быть, это может быть отправной точкой: вы можете использовать dplyr, ggplot2 для обработки данных и их построения.

Однако, здесь код:

# first, I used your function to have the frequencies:
ftest <- do.call("cbind", lapply(names(test[-1]), function(x) { temp <- as.data.frame.matrix(table(test[["KPG"]], test[[x]])); setNames(temp, paste0(x, names(temp))) }))

# then I added the KPG as column, not as rownames
ftest$KPG <- rownames(ftest)

library(ggplot2)
library(dplyr)

# now the work on the data, and the plot, in a dplyr chain
gather(ftest, variable, value, -KPG) %>%  # from wide to long format
ggplot(aes(x = variable, y = value)) +    # add plot, faced by kpg
geom_bar(stat = 'identity') +
facet_wrap(vars (KPG))

enter image description here

И вы можете настроить его по своему усмотрению.


С данными:

test <- read.table(text = "KPG Q1 Q2 Q3
1  112 -1  5  4
2  112  5  5  4
3  112  1  5  4
4  112  2  5  4
5  111  3  3  4
6  111  4  3 -1
7  111  2  3  2
8  111  2  3  3
9  111  2  3  5
10 111  2  3  5
11 113  2  3  5
12 113  2 -1  5
13 113  1  2  5
14 113 -1  2  5
15 113 -1  5  5
16 113  4  2  5",header = T)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...