首先,让我说这个社区非常有帮助。至于我的问题:
我有一些数据,likert的回答是1-4,其中8是我不知道的,9是NA
。
我使用以下命令将我的8和9替换为NAs:
df %>% mutate_all(~ifelse(.x %in% c(8, 9), NA, .x))
并对每个变量都这样做了。
我现在的问题是,我用NA
s得到了漂亮的数据,但我试图将变量组转换为连续的标度项。例如,ir1、ir2和ir3的Likert响应为1-4,相加得到的ir_scale
为0- 12。问题是当我将它们相加时:
irscale <- df$ir1 + df$ir2 + df$ir3
任何具有NA
的行都将返回NA
来计算总和。例如1+3+NA
= NA
,我希望它返回4。
我不能将NA
s转换为0,因为稍后我将使用回归。有什么想法?以下是一个示例数据集:
https://drive.google.com/file/d/1HwtjJ-nChRwVuVQhAYucB_JkUagVtByj/view?usp=sharing
发布于 2019-05-11 15:49:57
一种选择是rowSums
,它可以使用na.rm = TRUE
来处理NA
df %>%
mutate(irscale = rowSums(.[paste0("ir", 1:3)], na.rm = TRUE))
或者使用base R
irscale <- rowSums(df[paste0("ir", 1:3)], na.rm = TRUE)
发布于 2019-05-11 15:52:47
您可以使用rowSums
来实现这一点。na.rm=T
是处理NA
的常用参数
mtcars[ 3, 3] <- NA
mtcars$newvar <- rowSums( mtcars[ , 3:5], na.rm=T)
https://stackoverflow.com/questions/56091879
复制