我想使用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_,以修正它。 –