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

如何使用pivot_longer和/或pivot_wider重构R语言数据集?

解决方案

用tidyverse工具链可以轻松实现这个可扩展的格式转换,代码如下:

library(tidyverse)

# 原始数据集
dat <- tribble(
  ~name,              ~current_hit,        ~future_hit, ~current_raw_power, ~future_raw_power, ~current_game_power, ~future_game_power,
  "Jackson Holliday",           45,                 60,                 50,                60,                  25,                 60,
  "James Wood",                 30,                 35,                 70,                80,                  55,                 80)

# 格式转换
result <- dat %>%
  # 将所有current/future列转成长格式的key-value对
  pivot_longer(cols = -name, names_to = "key", values_to = "value") %>%
  # 拆分key为时期(current/future)和指标名称(hit/raw_power等)
  separate(key, into = c("period", "names"), sep = "_", extra = "merge") %>%
  # 将时期转成列,得到current和future两列
  pivot_wider(names_from = period, values_from = value) %>%
  # 重命名列名匹配期望输出
  rename(player = name) %>%
  # 调整列顺序
  select(player, names, current, future)

# 查看结果
print(result, row.names = FALSE)

运行后输出和你期望的完全一致:

player             names       current future
Jackson Holliday   hit              45     60
Jackson Holliday   raw_power        50     60
Jackson Holliday   game_power       25     60
James Wood         hit              30     35
James Wood         raw_power        70     80
James Wood         game_power       55     80

扩展性说明

这个方案完全支持新增current_xxx/future_xxx格式的列,不需要修改代码。只要保持列名前缀为current_或future_,后面跟指标名称(支持带下划线的名称,比如game_power),代码就能自动识别并转换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 22:52:34