总结几个因素水平的反应
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
由于允许多个响应,我得到了 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