r - 使用 dplyr 对连续变量进行分类

标签 r dplyr

这个问题在这里已经有了答案:





Categorize numeric variable with mutate

(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() ,解决这个问题?

此外,有没有办法计算类别而不是选择它们? IE。让 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/

相关文章:

r - 如何使用 dplyr 覆盖数据?

r - 将参数传递给使用 dplyr 的函数

r - 如何读取可变数量的文件,然后在 R 中组合数据帧?

r - 如何在 R 中并排显示列表 - 列表的 "cbind"?

mysql - 使用 R 和 dplyr 探索 MySQL 数据库

r - 每次在一组观察中出现特定模式(即列值从 1 变为 0)时,如何要求 R 对其进行标记?

r - 使用 dplyr 匹配两个数据帧中的时间戳

R 表函数 : how to coerce order of column names output of table()

r - 在 PDF 中的书面答案的问题下方添加空格

r - 如何在单个 R session 中创建多个临时目录?