【发布时间】:2016-05-17 09:21:29
【问题描述】:
我有一个来自调查的数据库,我从这个数据库中用 R 构建了一个数据框,看起来类似于:
cnt <-as.factor(c("Country 1", "Country 2", "Country 3", "Country 1", "Country 2", "Country 3" ))
bnk <-as.factor(c("bank 1", "bank 2", "bank 3", "bank 1", "bank 2", "bank 3" ))
qst <-as.factor(c("q1", "q1", "q1", "q2","q2","q2" ))
ans <-as.numeric(c(1,1,2,1,2,3))
df <-data.frame(cnt, bnk, qst,ans)
names(df) <- c("Country", "Institute", "Question", "Answer")
Country Institute Question Answer
1 Country 1 bank 1 q1 1
2 Country 2 bank 2 q1 1
3 Country 3 bank 3 q1 2
4 Country 1 bank 1 q2 1
5 Country 2 bank 2 q2 2
6 Country 3 bank 3 q2 3
它本质上是这个数据框,它显示有两个不同的问题 - q1,q2,参与者 - 这里来自不同国家的银行 - 必须以一定的数字尺度回答每个问题。
我的目的很简单。我想,对于每个问题,计算并绘制回答为 1 的银行的百分比、回答为 2 的银行的百分比等。
因此,在我们的示例中,有三个银行。关于问题 1,其中 2 个回答了 1,一个回答了 2。所以,我想形象化 - 例如通过条形图 - 有 2/3 的银行(即大约 67%)回答了 1 和 1/3(即 aprx. 33% ) 回答 2. 问题 2 类似。
不确定是否重要,但可能的数字答案的范围可能会因问题而异。也就是说,对于 q1,可用答案的范围是 1 到 2,但问题 2 的范围可能是 1 - 5。
有人可以建议我如何在 R 中快速实现这一点吗?
当然,一种肮脏的方法是计算银行的数量,计算q1(q2)中“1”的数量,然后计算各自的分数。然而,这种方法非常耗时,并且想知道 R 中是否有更好的选择。
更新
完成上述所有操作后,我想问几个问题来创建一个如下所示的条形图:
在上面的示例中,对问题 8 的回答中等于 1 的地方被标记为“我的银行正在……”,而等于 2 的回答中的“我的银行正在启动……” "如上图所示。
不过,我们暂时可以忽略“标记部分”,因为在 x 轴上只放置 1 和 2 就足够了。
【问题讨论】:
标签: r plot dataframe calculated-columns survey