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

如何利用tidyverse包在R中重构数据框:将行变量转为独立列?

使用tidyverse实现数据格式转换的方案

要完成你需要的数据格式转换,需要结合tidyverse中的两个核心函数:pivot_longer() 和 pivot_wider(),具体操作如下:

步骤说明

  1. 转长格式拆分年份列:用pivot_longer()把原数据中以年份命名的列(2015、2016)转换为长格式,生成Year(存储年份)和Value(对应年份的数值)两列。
  2. 转宽格式拆分食物类别:用pivot_wider()把Food列里的不同类别(Banana、Hotdog)拆成单独的列,匹配对应年份的数值。

代码示例

假设你的原始数据框名为df,执行以下代码即可完成转换:

library(tidyverse)

df_transformed <- df %>%
  # 处理年份列,转长格式
  pivot_longer(
    cols = c(`2015`, `2016`),  # 指定要转换的年份列(数字列名需用反引号包裹)
    names_to = "Year",         # 新列名,存储原年份列的列名
    values_to = "Value"        # 新列名,存储原年份列的数值
  ) %>%
  # 处理食物类别,转宽格式
  pivot_wider(
    names_from = Food,         # 用Food列的取值作为新列名
    values_from = Value        # 用Value列的数值填充新列
  )

转换后结果

执行代码后得到的数据框结构如下:

# Animal    Year   Banana  Hotdog
Monkey      2015    54      43
Monkey      2016    65      76
## # ... with 54 more rows

内容的提问来源于stack exchange,提问作者Joseph Carthof

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 18:09:25