如何重塑mtcars数据集?实现车名为X轴、cyl为Y轴的表格结构
解决mtcars数据重塑问题
你需要把长格式的三列数据(汽车名称、mpg、气缸数)转换为宽格式,核心是长转宽操作,用R里的工具可以轻松实现:
方法1:使用tidyverse(推荐)
先加载tidyverse包,把mtcars的行名转为正式列,再用pivot_wider重塑:
library(tidyverse) # 提取所需列并添加汽车名称列 car_data <- mtcars %>% rownames_to_column("car_name") %>% select(car_name, mpg, cyl) # 转成宽格式:行=汽车名称,列=气缸数,值=mpg wide_car_data <- car_data %>% pivot_wider( names_from = cyl, # 用cyl的取值作为新列名 values_from = mpg, # 用mpg的值填充单元格 names_prefix = "cyl_" # 给列名加前缀,避免纯数字列名 )
方法2:使用Base R
如果不想加载额外包,用base R的reshape函数:
# 添加汽车名称列并提取所需数据 car_data_base <- cbind(car_name = rownames(mtcars), mtcars[, c("mpg", "cyl")]) # 重塑为宽格式 wide_car_data_base <- reshape( car_data_base, idvar = "car_name", # 分组依据:汽车名称 timevar = "cyl", # 转为列的变量:气缸数 direction = "wide" # 指定转换方向为宽格式 )
最终生成的数据框里,每一行对应一个汽车名称,列对应不同气缸数(4/6/8),单元格内是对应的mpg值(单辆车只有一个气缸数,所以每行只有一个非NA值)。
内容的提问来源于stack exchange,提问作者Artūrs Katamadze
相关产品推荐
相关产品推荐

