如何在R数据框中按类别替换列中的数值?
解决方法:将数值变量替换为类别标签
原始数据准备
先给原始数据框命名列,方便后续操作:
data <- matrix(c(12, 6, 13, 15, 2, 7, 7, 14), nrow = 4) data <- as.data.frame(data) colnames(data) <- c("变量1", "变量2")
原始数据如下:
| 变量1 | 变量2 |
|---|---|
| 12 | 2 |
| 6 | 7 |
| 13 | 7 |
| 15 | 14 |
方法1:基础R ifelse() 函数
适合简单二元判断的直接实现:
# 生成类别列 data$`变量2(类别)` <- ifelse(data$`变量2` < 10, "类别1", "类别2") # 移除原数值列(按需选择) data <- data[, -2]
方法2:dplyr 包的 case_when()
扩展性更强,适合后续添加多分类条件的场景:
# 首次使用需安装包 install.packages("dplyr") library(dplyr) data <- data %>% mutate(`变量2(类别)` = case_when( `变量2` < 10 ~ "类别1", `变量2` >= 10 ~ "类别2" )) %>% select(-`变量2`) # 移除原数值列
方法3:cut() 函数分箱
针对连续变量区间分箱的场景,自动生成对应类别:
data$`变量2(类别)` <- cut( data$`变量2`, breaks = c(-Inf, 9, Inf), # 断点设为9,对应<10和>=10的区间 labels = c("类别1", "类别2") ) data <- data[, -2]
最终结果
无论采用哪种方法,最终都会得到如下数据框:
| 变量1 | 变量2(类别) |
|---|---|
| 12 | 类别1 |
| 6 | 类别1 |
| 13 | 类别1 |
| 15 | 类别2 |
内容的提问来源于stack exchange,提问作者mathslover
相关产品推荐
相关产品推荐

