R:如何使用表格来制作m x n数据

时间:2017-06-03 16:53:22

标签: r

mydat = data.frame(Q1 = c(0, 1, 0, 1), Q2 = c(0, 1, 1, 1), 
                   Q3 = c(1, 1, 1, 1), Gender = c("M", "M", "F", "F"))
> mydat
  Q1 Q2 Q3 Gender
1  0  0  1      M
2  1  1  1      M
3  0  1  1      F
4  1  1  1      F

> table(mydat[,1:3], mydat$Gender)

Error in sort.list(y) : 'x' must be atomic for 'sort.list'
Have you called 'sort' on a list?

我有一个非常简单的数据集,包含3个二元问题和一个性别变量。我有兴趣看看3个问题和性别之间是否有任何关联,所以我想将我的数据制成3(问题)x 2(性别)计数表。我希望我的桌子看起来像这样

      Q1    Q2    Q3
M      1     1     2
F      1     2     2

编辑:

mydat = data.frame(Q1 = c(0, 1, NA, 1), Q2 = c(0, 1, 1, 1), 
                   Q3 = c(1, NA, 1, 1), Gender = c("M", "M", "F", "F"))

> rowsum(mydat[1:3], mydat$Gender)
  Q1 Q2 Q3
F NA  2  2
M  1  1 NA

1 个答案:

答案 0 :(得分:0)

我们可以按操作分组,sum其他列的元素

library(dplyr)
mydat %>% 
   group_by(Gender) %>% 
   summarise_all(funs(sum(., na.rm = TRUE)))
# A tibble: 2 x 4
#   Gender    Q1    Q2    Q3
#   <fctr> <int> <int> <int>
#1      F     1     2     2
#2      M     1     1     2

或使用base R

rowsum(mydat[-4], mydat$Gender, na.rm = TRUE)
#   Q1 Q2 Q3
#F  1  2  2
#M  1  1  2