这是我的第一个问题。我以前曾找过一个答案,但我找不到令人满意的答案 - 可能是因为我是R的绝对初学者。
我有以下数据:
pbw1 pbw2 pbw3 pbw4 pbw5 pbw6
[1,] 2 3 2 1 0 2 3
[2,] 2 1 1 3 4 5 6
PBW是一个以Likert量表回答的变量。此数据集有1014行,因此这只是一个示例。
我需要的是一个看起来像这样的图:
对于我的数据集,这意味着:在x轴上有6个项目(我想在最后用句子替换pbw),因此有6个条形。这些应该显示n = 1014(百分比)中有多少人回答了该项目。比如,80%有0回答,10%有1回答,5%回答5%等等。这显然是累积的。
我读的只是ggplot,融化等等。然而,我只是无法让R做我想要和需要的事情。
这没有帮助:
datm = melt(cbind(pbwmatrix, ind=rownames(pbwmatrix)), id.vars=c('ind'))
barplot(pbwmatrix)也没有;随机命令的几个愚蠢组合也没有(是的,我很绝望)。
非常感谢任何帮助!
答案 0 :(得分:2)
以下是使用ggplot
df <- as.data.frame(replicate(6, sample(1:6,100,T)))
library(tidyverse)
df %>%
gather %>%
group_by(key, value) %>%
tally %>%
mutate(n = n/sum(n)*100) %>%
ggplot(aes(x=key, y=n, fill=as.factor(value))) +
geom_col() +
geom_text(aes(label=n), position=position_stack(.5)) +
coord_flip()