You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何转换宽格式数据框为适配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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 04:50:44