如何转换宽格式数据框为适配ggplot的可用格式?
使用
pivot_longer()将宽格式活产数据转换为长格式 你可以用tidyr包中的pivot_longer()函数轻松完成宽转长的转换,核心是明确要转换的列、新列名称,再处理年份格式:
# 加载tidyverse(包含tidyr和dplyr工具) library(tidyverse) # 宽转长并清理年份格式 il_births_long <- il_births %>% pivot_longer( cols = starts_with("x"), # 选中所有以"x"开头的年份列 names_to = "year", # 原年份列名存入新列`year` values_to = "births" # 原列中的出生数存入新列`births` ) %>% # 移除年份列的"x"前缀,转换为整数类型 mutate(year = as.integer(str_remove(year, "x")))
参数说明:
cols = starts_with("x"):你的年份列均以x开头(x1989至x2009),用这个选择器可一次性选中所有目标列,无需逐个列举列名。names_to&values_to:分别指定存储原列名、原列数值的新列名称,按需求命名为year和births即可。- 最后的
mutate步骤:移除year列的x前缀并转为整数,后续用ggplot可视化时,年份可作为连续变量处理,更适合绘制趋势类图表。
验证转换结果:
执行后用glimpse()查看长格式数据:
glimpse(il_births_long)
转换后的数据包含3列:county_name(县名)、year(年份)、births(活产数),总行数为106个县 ×21年=2226行,完全符合每行对应一个县+年份的需求,可直接用于ggplot可视化。
提示:转置数据框效果差的原因是,转置后会把县名变为列名,破坏数据结构化;
pivot_longer()是专门针对宽转长场景设计的工具,更适配这类表格数据的整理需求。
内容的提问来源于stack exchange,提问作者nth1824
相关产品推荐
相关产品推荐

