r - 绘制序数变量的频率计数
问题描述
我有一份相当艰巨的问卷(2000 名参与者),分为 86 个地理区域(KPG)。这将是更广泛的土地利用变化研究的一部分,因此我需要可视化每个 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 在所有 KPG 上的频率计数
现在我如何把这个情节分解成每个 KPG?
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
所以我也可以从这个开始工作
我期望类似于条形图的东西,每个答案一个条形图,其中每个答案结果的高度是给出答案的频率。
解决方案
也许这可能是一个起点:您可以使用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))
您可以根据自己的喜好对其进行自定义。
有数据:
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)
推荐阅读
- mysql - 如何根据节点级别查找父级
- android - 我如何在 android studio 中开发这个
- jquery - 在窗口调整大小时更改 jquery 值
- c# - 如何在c#中使用泛型调用c函数
- html - 无法使用多个媒体查询
- entity-framework - 是否有必要尝试捕获每个 context.SaveChanges?
- python - 使用 OpenCV 提高/优化寻找轮廓的准确性
- javascript - 无法读取属性“executeScript”
- javascript - 如何使用全日历事件作为变量?
- java - Java System.getProperty("user.home") 如何为其他用户(pi)返回主页?