我想使用dplyr::case_when
内dplyr::mutate
创建一个新的变量,我设置一些值丢失,同时重新编码其它值。与dplyr避免类型冲突:: case_when
但是,如果我尝试值设置为NA
,我得到一个错误,说我们不能创建变量new
因为NA
s为逻辑:
Error in mutate_impl(.data, dots) :
Evaluation error: must be type double, not logical.
有没有一种办法值设置为NA
数据帧中使用此非逻辑向量?
library(dplyr)
# Create data
df <- data.frame(old = 1:3)
# Create new variable
df <- df %>% dplyr::mutate(new = dplyr::case_when(old == 1 ~ 5,
old == 2 ~ NA,
TRUE ~ old))
# Desired output
c(5, NA, 3)
你也可以做'as.numeric(NA)'或'as.integer(NA)'的'NA'情况下,如'NA_real_'和'NA_integer_'有点令人讨厌,并且很少在这样的事情之外使用。 – Marius
不错。此外,要显示:相同(NA_real_,as.numeric(NA))会生成TRUE。 – user3614648
@hadley这个答案现在已经很清楚,我,但我花了一段时间才搞清楚。在tidyverse'case_when'文档中有一个这样的例子会很有帮助。在我的情况丢失了所有值分组的数据时,平均(X [1:2],na.rm = T)中产生的NaN结果。将这些情况重新编码为NA_real_,以修正它。 –