如何在数据集中去除定性预测变量?用range()简化操作
批量计算Auto数据集定量变量的range值
基础R方案
先加载数据集,排除指定的2个定性变量后批量应用range()函数:
require(ISLR) data(Auto) # 排除定性变量origin和name,得到定量变量子集 auto_quantitative <- Auto[, !names(Auto) %in% c("origin", "name")] # 批量计算每列的range,结果以列表形式返回 variable_ranges <- lapply(auto_quantitative, range) # 可选:将列表转为数据框,方便查看 range_results <- as.data.frame(do.call(rbind, variable_ranges)) colnames(range_results) <- c("最小值", "最大值") print(range_results)
Tidyverse方案(更简洁)
若习惯用tidyverse工具链,可通过管道流实现更直观的操作:
library(tidyverse) library(ISLR) data(Auto) Auto %>% select(-origin, -name) %>% # 移除两个定性变量 map(range) %>% # 对每列批量计算range bind_rows(.id = "变量名称") %>% # 转换为结构化数据框 rename(最小值 = V1, 最大值 = V2)
关键说明
- Auto数据集中的
origin(产地)和name(车型名称)是定性变量,其余7列均为定量变量,与你手动罗列的变量完全一致。 - 通过
!names(Auto) %in% c("origin", "name")可快速筛选出所有定量变量,避免手动逐个输入变量名的繁琐操作。 lapply(基础R)和map(tidyverse)都是批量处理函数,能一次性对所有目标列应用range(),提升代码效率。
内容的提问来源于stack exchange,提问作者Beginner Coder
相关产品推荐
相关产品推荐

