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
答案 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