总结R中的多个假人

时间:2014-02-21 18:44:31

标签: r categorical-data

说我已经问了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),但这会产生不同类型的输出。此外,如果你的答案涉及一张外卡,我真的很感激,因为我的真实案例预计会有几十个假人,我不想全部写下来。

1 个答案:

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