This question already has answers here:
Categorize numeric variable with mutate
(2个答案)
4年前关闭。
我想基于连续数据创建一个具有3个任意类别的新变量。
使用基础我会
我猜是否有dplyr解决方案
此外,是否有一种方法可以计算类别而不是选择类别?即让R计算类别的中断位置。
编辑
答案是在thread中,但是它不涉及标签,这使我感到困惑(并可能使其他人感到困惑),因此我认为这个问题是有目的的。
或者,使用
(2个答案)
4年前关闭。
我想基于连续数据创建一个具有3个任意类别的新变量。
set.seed(123)
df <- data.frame(a = rnorm(100))
使用基础我会
df$category[df$a < 0.5] <- "low"
df$category[df$a > 0.5 & df$a < 0.6] <- "middle"
df$category[df$a > 0.6] <- "high"
我猜是否有dplyr解决方案
mutate()
?此外,是否有一种方法可以计算类别而不是选择类别?即让R计算类别的中断位置。
编辑
答案是在thread中,但是它不涉及标签,这使我感到困惑(并可能使其他人感到困惑),因此我认为这个问题是有目的的。
最佳答案
要将数字转换为分类,请使用cut
。在您的特定情况下,您需要:
df$category <- cut(df$a,
breaks=c(-Inf, 0.5, 0.6, Inf),
labels=c("low","middle","high"))
或者,使用
dplyr
:library(dplyr)
res <- df %>% mutate(category=cut(a, breaks=c(-Inf, 0.5, 0.6, Inf), labels=c("low","middle","high")))
## a category
##1 -0.560475647 low
##2 -0.230177489 low
##3 1.558708314 high
##4 0.070508391 low
##5 0.129287735 low
## ...
##35 0.821581082 high
##36 0.688640254 high
##37 0.553917654 middle
##38 -0.061911711 low
##39 -0.305962664 low
##40 -0.380471001 low
## ...
##96 -0.600259587 low
##97 2.187332993 high
##98 1.532610626 high
##99 -0.235700359 low
##100 -1.026420900 low
关于r - 用dplyr分类连续变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40380112/
10-13 07:29