具有缺失值的 NA 水平以及来自 R 的 cut 函数
Having NA level for missing values with cut function from R
R中的cut函数省略了NA。但我想要一个缺失值的水平。这是我的 MWE。
set.seed(12345)
Y <- c(rnorm(n = 50, mean = 500, sd = 1), NA)
Y1 <- cut(log(Y), 5)
Labs <- levels(Y1)
Labs
[1] "(6.21,6.212]" "(6.212,6.213]" "(6.213,6.215]" "(6.215,6.217]" "(6.217,6.219]"
期望输出
[1] "(6.21,6.212]" "(6.212,6.213]" "(6.213,6.215]" "(6.215,6.217]" "(6.217,6.219]" "NA"
你可以使用 addNA
Labs <- levels(addNA(Y1))
Labs
#[1] "(6.21,6.212]" "(6.212,6.213]" "(6.213,6.215]" "(6.215,6.217]"
#[5] "(6.217,6.219]" NA
在预期的输出中,您有字符 "NA"。但是,我认为最好有真正的 NA,因为它可以是 removed/replaced 和 is.na
is.na(Labs)
#[1] FALSE FALSE FALSE FALSE FALSE TRUE
将原始 MWE 的第三行更改为以下内容,将 NA(实际上)存储在 Y1 中,而不是外部向量 Labs。这会清理分析任务,例如制作表格或构建模型。 is.na()
.
仍然认可 NA
Y1 <- factor(cut(log(Y), 5), exclude=NULL)
is.na(levels(Y1))
结果:
[1] FALSE FALSE FALSE FALSE FALSE TRUE
R中的cut函数省略了NA。但我想要一个缺失值的水平。这是我的 MWE。
set.seed(12345)
Y <- c(rnorm(n = 50, mean = 500, sd = 1), NA)
Y1 <- cut(log(Y), 5)
Labs <- levels(Y1)
Labs
[1] "(6.21,6.212]" "(6.212,6.213]" "(6.213,6.215]" "(6.215,6.217]" "(6.217,6.219]"
期望输出
[1] "(6.21,6.212]" "(6.212,6.213]" "(6.213,6.215]" "(6.215,6.217]" "(6.217,6.219]" "NA"
你可以使用 addNA
Labs <- levels(addNA(Y1))
Labs
#[1] "(6.21,6.212]" "(6.212,6.213]" "(6.213,6.215]" "(6.215,6.217]"
#[5] "(6.217,6.219]" NA
在预期的输出中,您有字符 "NA"。但是,我认为最好有真正的 NA,因为它可以是 removed/replaced 和 is.na
is.na(Labs)
#[1] FALSE FALSE FALSE FALSE FALSE TRUE
将原始 MWE 的第三行更改为以下内容,将 NA(实际上)存储在 Y1 中,而不是外部向量 Labs。这会清理分析任务,例如制作表格或构建模型。 is.na()
.
Y1 <- factor(cut(log(Y), 5), exclude=NULL)
is.na(levels(Y1))
结果:
[1] FALSE FALSE FALSE FALSE FALSE TRUE