首先,我要说这个社区非常有帮助。至于我的问题:
我有一些数据具有李克特反应1-4,其中不知道是8,NA
是9。
我可以使用以下命令用NA替换我的8s和9s:
df %>% mutate_all(~ifelse(.x %in% c(8, 9), NA, .x))
并对每个变量执行该操作。
我现在的问题是我的NA
数据很好看,但是我试图将变量组转换成连续的比例尺项目。例如,ir1,ir2和ir3的李克特响应1-4总计为ir_scale
,范围为0-12。问题是当我添加它们时:
irscale <- df$ir1 + df$ir2 + df$ir3
任何具有NA
的行都将返回NA
作为总和。例如1 + 3 + NA
= NA
,我希望它返回4。
由于以后将使用回归,因此无法将NA
设为0。有什么想法吗?这是一个示例数据集:
https://drive.google.com/file/d/1HwtjJ-nChRwVuVQhAYucB_JkUagVtByj/view?usp=sharing
答案 0 :(得分:1)
一个选项是rowSums
,它可以与NA
一起使用na.rm = TRUE
df %>%
mutate(irscale = rowSums(.[paste0("ir", 1:3)], na.rm = TRUE))
或使用base R
irscale <- rowSums(df[paste0("ir", 1:3)], na.rm = TRUE)
答案 1 :(得分:1)
您可以为此使用rowSums
。 na.rm=T
是处理NA
s的常用参数
mtcars[ 3, 3] <- NA
mtcars$newvar <- rowSums( mtcars[ , 3:5], na.rm=T)