总结几个因素水平的反应

Summing up responses on several factor levels

由于允许多个响应,我得到了 2 个相同的变量。

比方说,关于爱好的变量:1 = 足球,2 = 冰球,3 = 我没有爱好

因此,一个人可以有两个爱好:足球加冰球。

hobby1<-c(1,2,3)
hobby1<-factor(hobby1,labels("football", "ice hockey", "I have no hobbies")

hobby2<-c(1,2,3)
hobby2<-factor(hobby2,labels("football", "ice hockey", "I have no hobbies")

现在我尝试提取爱好的数量,从0到2。

我已经试过了: sum(hobby1<2, hobby2<2)

如何做到这一点,求和函数不适用于因数? 另外,我的解决方案不会考虑第三类:没有爱好。

我是否应该更改我的数据安排,例如虚拟编码(足球 yes/no,...)。

虚拟编码可能是一种更简单的方法,因为一旦将数据转换为因子,就无法轻松使用 sum< 操作。这种方法适用于 base R:

df <- data.frame(football = c(0, 1, 1, 0),
                 ice_hockey = c( 1, 1, 0, 0))
df$num_hobbies <- rowSums(df[, 1:2])
df
# football ice_hockey num_hobbies
#        0          1           1
#        1          1           2
#        1          0           1
#        0          0           0

或者使用 dplyr 更容易地利用列名:

library(dplyr)
df <- data.frame(football = c(0, 1, 1, 0),
                 ice_hockey = c( 1, 1, 0, 0)) %>%
  mutate(num_hobbies = football + ice_hockey)
df
# football ice_hockey num_hobbies
#        0          1           1
#        1          1           2
#        1          0           1
#        0          0           0