R语言data frame基于x列阈值分类生成新列z的实现方法咨询
R语言实现数据框新增分类列的两种方法
你可以选择基础R或者tidyverse生态的dplyr包两种方案实现需求:
方案1:基础R(无需安装额外包)
使用嵌套ifelse函数直接赋值新列:
# 嵌套ifelse按规则生成z列 df$z <- ifelse(df$x > 0.8, "A", ifelse(df$x >= 0.5 & df$x <= 0.8, "B", "C"))
运行后得到的df结果如下:
| x | y | z |
|---|---|---|
| 0.32 | 0.68 | C |
| 0.80 | 0.20 | B |
| 0.60 | 0.40 | B |
方案2:dplyr包(代码可读性更高,适合多分类场景)
先确保你已经安装并加载dplyr包,使用case_when函数定义分类规则:
# 加载包 library(dplyr) # 新增z列 df <- df %>% mutate(z = case_when( x > 0.8 ~ "A", x >= 0.5 & x <= 0.8 ~ "B", x < 0.5 ~ "C" ))
两种方案最终输出的结果完全一致。
内容的提问来源于stack exchange,提问作者b98t
相关产品推荐
相关产品推荐

