gpt4 book ai didi

reshape 调查数据以获取 R 中的响应计数

转载 作者:行者123 更新时间:2023-12-04 11:43:46 24 4
gpt4 key购买 nike

我有一些匿名调查数据:

df <- structure(list(User = c("user1", "user2", "user3", "user4", "user5", 
"user6", "user7", "user8", "user9", "user10", "user11", "user12",
"user13", "user14"), Q1 = c(0, 3, 5, 0, 6, 5, 1, 4, 6, 4, 5,
0, 0, 0), Q2 = c(0, 6, 4, 0, 4, 5, 0, 4, 6, 5, 5, 5, 0, 4), Q3 = c(0,
4, 5, 3, 4, 5, 0, 4, 4, 5, 5, 0, 0, 0), Q4 = c(5L, 6L, 6L, 7L,
6L, 6L, 6L, 4L, 3L, 4L, 6L, 5L, 3L, 6L), Q5 = c(7L, 5L, 6L, 7L,
5L, 5L, 7L, 4L, 4L, 6L, 6L, 6L, 6L, 6L), Q6 = c(6, 5, 7, 7, 7,
6, 7, 6, 0, 5, 4, 7, 3, 6), Q7 = c(6L, 7L, 7L, 7L, 6L, 6L, 7L,
4L, 5L, 6L, 6L, 6L, 7L, 6L), Q8 = c(1, 4, 6, 3, 4, 6, 3, 4, 4,
5, 4, 0, 1, 3), Q9 = c(3, 3, 4, 0, 4, 5, 1, 4, 3, 5, 7, 4, 0,
0), Q10 = c(3, 3, 3, 0, 5, 5, 3, 4, 5, 6, 7, 5, 0, 4), Q11 = c(3,
4, 5, 0, 4, 5, 5, 4, 3, 5, 6, 4, 0, 0), Q12 = c(6, 6, 5, 0, 4,
0, 7, 4, 5, 3, 0, 6, 5, 5)), .Names = c("User", "Q1", "Q2", "Q3",
"Q4", "Q5", "Q6", "Q7", "Q8", "Q9", "Q10", "Q11", "Q12"), row.names = c(NA,
-14L), class = "data.frame")

数据框如下所示 - 值表示 1-7 范围内的响应:

     User Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12
1 user1 0 0 0 5 7 6 6 1 3 3 3 6
2 user2 3 6 4 6 5 5 7 4 3 3 4 6
3 user3 5 4 5 6 6 7 7 6 4 3 5 5
4 user4 0 0 3 7 7 7 7 3 0 0 0 0
5 user5 6 4 4 6 5 7 6 4 4 5 4 4
6 user6 5 5 5 6 5 6 6 6 5 5 5 0
7 user7 1 0 0 6 7 7 7 3 1 3 5 7
8 user8 4 4 4 4 4 6 4 4 4 4 4 4
9 user9 6 6 4 3 4 0 5 4 3 5 3 5
10 user10 4 5 5 4 6 5 6 5 5 6 5 3
11 user11 5 5 5 6 6 4 6 4 7 7 6 0
12 user12 0 5 0 5 6 7 6 0 4 5 4 6
13 user13 0 0 0 3 6 3 7 1 0 0 0 5
14 user14 0 4 0 6 6 6 6 3 0 4 0 5

我想获得每个问题的回复数。

换句话说,对于结果;

  • 列将是 1-7 级
  • 行就是问题
  • 值是每个问题的回答数

基本上,生成的表格如下所示:

  Question  count1  count2  count3  count4  count5  count6  count7 
Q1 1 0 1 2 3 1 0
Q2 0 0 0 4 4 2 0
Q3 .... .... ....

我如何在 R 中完成此操作?我猜可能使用了 reshape2 包?

最佳答案

reshape2 大部分已被 tidyr 取代。这是使用 dplyrtidyr

的解决方案
library(dplyr)
library(tidyr)

df %>%
gather(question, response, Q1:Q12) %>%
count(question, response) %>%
spread(response, n, fill = 0)

结果:

# A tibble: 12 x 8
question `0` `1` `3` `4` `5` `6` `7`
<chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 Q1 5.00 1.00 1.00 2.00 3.00 2.00 0
2 Q10 2.00 0 4.00 2.00 4.00 1.00 1.00
3 Q11 3.00 0 2.00 4.00 4.00 1.00 0
4 Q12 3.00 0 1.00 2.00 4.00 3.00 1.00
5 Q2 4.00 0 0 4.00 4.00 2.00 0
6 Q3 5.00 0 1.00 4.00 4.00 0 0
7 Q4 0 0 2.00 2.00 2.00 7.00 1.00
8 Q5 0 0 0 2.00 3.00 6.00 3.00
9 Q6 1.00 0 1.00 1.00 2.00 4.00 5.00
10 Q7 0 0 0 1.00 1.00 7.00 5.00
11 Q8 1.00 2.00 3.00 5.00 1.00 2.00 0
12 Q9 3.00 1.00 3.00 4.00 2.00 0 1.00

关于 reshape 调查数据以获取 R 中的响应计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49924769/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com