重塑R中的多个响应调查数据

时间:2018-07-03 13:53:39

标签: r reshape survey

我正在处理R中具有多个回答问题的调查数据。

当前我的数据如下:

Q1_1  Q1_2  Q1_3 Q1_4
1       1    0    0
1       0    0    0 
0       1    1    0 
1       0    0    0

我希望它看起来像这样,所以我可以创建一个比较计数的条形图:

Q1     Count 
Q1_1     3
Q1_2     2
Q1_3     1 
Q1_4     0 

我是R的新手,不知道从哪里开始。我将如何进行重组?

1 个答案:

答案 0 :(得分:1)

这是一个选项,它将为您提供数据集作为输出,以便您可以使用它进行绘图:

df = read.table(text = "
Q1_1  Q1_2  Q1_3 Q1_4
1       1    0    0
1       0    0    0 
0       1    1    0 
1       0    0    0
", header=T)

library(tidyverse)

df %>%
  gather(col, value) %>%         # reshape data
  group_by(col) %>%              # for every column name
  summarise(Count = sum(value))  # get sum of values

# # A tibble: 4 x 2
#    col  Count
#   <chr> <int>
# 1 Q1_1      3
# 2 Q1_2      2
# 3 Q1_3      1
# 4 Q1_4      0

这是另一个选择

df %>%
  summarise_all(sum) %>%  # get the sum for each column
  gather(col, value)      # reshape data

#    col value
# 1 Q1_1     3
# 2 Q1_2     2
# 3 Q1_3     1
# 4 Q1_4     0

您也可以使用colSums,但是您需要获取列名称并将其另存为新数据集中的列:

res = colSums(df)

data.frame(col = names(res),
           Count = res)

#       col Count
# Q1_1 Q1_1     3
# Q1_2 Q1_2     2
# Q1_3 Q1_3     1
# Q1_4 Q1_4     0