说我已经问了10个人他们喜欢哪种水果。不止一个答案是可能的。结果输入R如下:
set.seed(234078)
df <- data.frame(q1.banana = sample(0:1, 10, replace = TRUE),
q1.apple = sample(0:1, 10, replace = TRUE),
q1.melon = sample(0:1, 10, replace = TRUE))
那样
> df
q1.banana q1.apple q1.melon
1 0 0 1
2 0 1 1
3 1 1 0
4 1 0 0
5 0 1 1
6 0 0 0
7 1 0 0
8 0 0 0
9 0 1 1
10 0 0 1
如何汇总表中的信息,如下所示?
q1.* Freq
banana 3
apple 4
melon 5
搜索之后,我发现了a couple of ideas,例如使用interaction(q1.banana, q1.apple, q1.melon)
,但这会产生不同类型的输出。此外,如果你的答案涉及一张外卡,我真的很感激,因为我的真实案例预计会有几十个假人,我不想全部写下来。
答案 0 :(得分:2)
这可能是一种选择。
set.seed(234078)
df <- data.frame(q1.banana = sample(0:1, 10, replace = TRUE),
q1.apple = sample(0:1, 10, replace = TRUE),
q1.melon = sample(0:1, 10, replace = TRUE))
library(reshape2)
# Melt the data
df1 <- melt(df)
df1$value <- as.numeric(df1$value)
library(plyr)
# Now use ddply to sum the values
ddply(df1,.(variable),summarize,Freq=sum(value))
variable Freq
1 q1.banana 3
2 q1.apple 4
3 q1.melon 5
另一个选择
> colSums(df)
q1.banana q1.apple q1.melon
3 4 5