【发布时间】:2018-05-11 08:10:00
【问题描述】:
我有一个数据框,我在其中重新编码了几列,以便将 999 设置为 NA
dfB <-dfA %>%
mutate(adhere = if_else(adhere==999, as.numeric(NA), adhere)) %>%
mutate(engage = if_else(engage==999, as.numeric(NA), engage)) %>%
mutate(quality = if_else(quality==999, as.numeric(NA), quality)) %>%
mutate(undrstnd = if_else(undrstnd==999, as.numeric(NA), undrstnd)) %>%
mutate(sesspart = if_else(sesspart==999, as.numeric(NA), sesspart)) %>%
mutate(attended = if_else(attended>=9, as.integer(NA), attended))
我想使用 mutate_at() 和一系列列和 recode() 而不是 if_else(),但我不知道如何给它条件。我认为 999 = NA 基于一些 mutate_all 示例 - 但我还需要 NA 来匹配 .x 的类型,我不确定如何让它成为类型敏感的
我试过了:
y <- data.frame(y1=c(1,2,999,3,4), y2=c(1L, 2L, 999L, 3L, 4L), y3=c(T,T,F,F,T))
z <- y %>%
mutate_at( vars(y1:y2), funs(recode(.,`999` = as.numeric(NA))))
但我收到一条警告“视为 NA 的未替换值不兼容。请详细指定替换或提供 .default”,我可以看到它的措辞是针对数字列,而不是针对整数列 y2”
> z
y1 y2 y3
1 1 NA TRUE
2 2 NA TRUE
3 NA NA FALSE
4 3 NA FALSE
5 4 NA TRUE
【问题讨论】: