将数字数据突变为 "high" "medium" 和 "low" 产生的 between() 调用数字向量与 S3 class
Mutation of numeric Data into "high" "medium" and "low" produced between() called on numeric vector with S3 class
我试图通过
将数字数据突变为“高”、“中”和“低”
library(dplyr)
mdata %>%
mutate(mvariable = case_when(vari < quantile(vari,0.5) ~ 'low',
between(vari, quantile(vari, 0.5), quantile(vari, 0.75))~'med',
TRUE ~ 'high'))
在多层次分析中使用它。
它没有生成我想要的数据,但告诉我:
between() 使用 S3 class
调用数值向量
我做错了什么?
提前致谢。
我正在使用 R 版本 4.1.2 -- “Bird Hippie”
另一种解决方案(不知道数据)可能是通过切换 case_when
:
的顺序来完全绕过 between
函数
library(tidyverse)
mdata <- mdata %>%
mutate(mvariable = case_when(vari < quantile(vari, 0.5) ~ 'low',
vari > quantile(vari, 0.75) ~ 'high',
TRUE ~ 'med'))
你试过了吗base::cut()
?
library(dplyr)
mdata %>%
mutate(mvariable = cut(vari,
breaks=c(-Inf, 0.5, 0.75, Inf),
labels=c("low", "med", "high")))
标记时,标签需要 n 次中断 - 1。即,标签 = 中断 - 1。
因此,如果您有 5 个中断,则需要 4 个标签,4 个中断需要 3 个标签,依此类推。
编辑:
您还可以使用动态分位数,它会根据您的数据而变化。
library(dplyr)
mdata %>%
mutate(mvariable = cut(vari,
breaks=c(-Inf, quantile(vari)[3], quantile(vari)[4], Inf),
labels=c("low", "med", "high")))
我试图通过
将数字数据突变为“高”、“中”和“低”library(dplyr)
mdata %>%
mutate(mvariable = case_when(vari < quantile(vari,0.5) ~ 'low',
between(vari, quantile(vari, 0.5), quantile(vari, 0.75))~'med',
TRUE ~ 'high'))
在多层次分析中使用它。
它没有生成我想要的数据,但告诉我:
between() 使用 S3 class
调用数值向量我做错了什么?
提前致谢。
我正在使用 R 版本 4.1.2 -- “Bird Hippie”
另一种解决方案(不知道数据)可能是通过切换 case_when
:
between
函数
library(tidyverse)
mdata <- mdata %>%
mutate(mvariable = case_when(vari < quantile(vari, 0.5) ~ 'low',
vari > quantile(vari, 0.75) ~ 'high',
TRUE ~ 'med'))
你试过了吗base::cut()
?
library(dplyr)
mdata %>%
mutate(mvariable = cut(vari,
breaks=c(-Inf, 0.5, 0.75, Inf),
labels=c("low", "med", "high")))
标记时,标签需要 n 次中断 - 1。即,标签 = 中断 - 1。 因此,如果您有 5 个中断,则需要 4 个标签,4 个中断需要 3 个标签,依此类推。
编辑:
您还可以使用动态分位数,它会根据您的数据而变化。
library(dplyr)
mdata %>%
mutate(mvariable = cut(vari,
breaks=c(-Inf, quantile(vari)[3], quantile(vari)[4], Inf),
labels=c("low", "med", "high")))