突变发生了变化,如何将排除的值重新编码为NA的新变量



Mutate不再只替换已定义的值,它还继承了我没有定义的其他值。这是包裹里发生了什么变化,还是发生了什么?这是一个问题,因为这是我如何过滤掉Likert量表之外的值(表示"不知道"或"没有意见"(。

例如

q4的值为1-9,但就生成描述性统计而言,只有1-7与量表的分析相关。我过去常常通过编码到一个新的变量L4来解决这个问题,其中只有1-7个选项。像这样:

mydata <- mutate(mydata, L4 = recode(q4, "1" = 1,
                                       "2" = 2,
                                       "3" = 3,
                                       "4" = 4,
                                       "5" = 5,
                                       "6" = 6,
                                       "7" = 7))

但现在,R包含了新变量中的8和9。它将重新编码已定义的值,但也将结转未定义的值如何定义值>7作为新变量中的NA

以下是我尝试过的一些东西,由于各种原因都失败了。

mydata <- mutate(mydata, L4 = recode(q4, is.na(.x >= 7.5 )))
mydata <- mutate(mydata, L4 = na_if(.x, q4 >= 7.5))
mydata <- mutate(mydata, L4 ~replace_na(q4, (q4 >= 7.7))
across(c(q4,q7:q14v4,q19), ~replace_na(.x, mean(.x[.x<=7], na.rm=TRUE))))
mydata <- mydata %>% 
mutate(L4 = recode(
q4, "1" = 1,
"2" = 2,
"3" = 3,
"4" = 4,
"5" = 5,
"6" = 6,
"7" = 7, 
.default = NA_real_
))

最新更新