有关将变量添加到包括NA在内的规模项目的问题

时间:2019-05-11 15:47:14

标签: r dplyr

首先,我要说这个社区非常有帮助。至于我的问题:

我有一些数据具有李克特反应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

2 个答案:

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

您可以为此使用rowSumsna.rm=T是处理NA s的常用参数

mtcars[ 3, 3] <- NA
mtcars$newvar <- rowSums( mtcars[ , 3:5], na.rm=T)