我觉得这是一个简单的问题,我应该能够弄清楚自己,但我似乎无法想出一个解决方案。
我一直在阅读这里和其他地方的各种帖子,但我似乎无法想象我想做什么(也许我只是没有使用正确的术语?)
我得到了一些这样的调查数据:
df <- data.frame(id = c(101,102,103,104,105,106,107),
q1_1 = c(1,3,3,2,5,4,2),
q1_2 = c(3,4,5,5,2,1,1),
q1_3 = c(5,5,2,2,3,1,4))
df
我可以创建一个表格,给出响应比例:
round(prop.table(table(df$q1_1)),3)*100
我想要的是构建同一个表,但是有多行(每行是一个不同的问题),而列是响应级别。我怎么做?
这让我疯了。任何帮助将不胜感激。谢谢!
答案 0 :(得分:0)
这很简单:
> out <- lapply(df, function(x) round(prop.table(table(x)),3)*100)
> do.call(rbind, out[2:4])
1 2 3 4 5
q1_1 14.3 28.6 28.6 14.3 14.3
q1_2 28.6 14.3 14.3 14.3 28.6
q1_3 14.3 28.6 14.3 14.3 28.6