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

如何在R中按年份映射值,将能源数据重塑为指定行列格式

R数据重塑:将能源源转列、年份转行

针对你的数据结构(能源源名称列 + 成对的年份/数值列),可以通过以下R代码完成数据重塑:

代码实现

# 加载核心处理包
library(tidyverse)

# 替换为你的实际数据框名称
energy_data <- your_data_frame_name
# 替换为能源源名称列的实际列名
source_col <- "source_name"

# 定义年份列(偶数列:18到140)和数值列(奇数列:19到141)的索引
year_cols_idx <- seq(18, 140, by = 2)
value_cols_idx <- seq(19, 141, by = 2)

# 生成年份列与数值列的名称配对
col_pairs <- tibble(
  year_col = names(energy_data)[year_cols_idx],
  value_col = names(energy_data)[value_cols_idx]
)

# 将成对的年份-数值列转成长格式
long_data <- map_dfr(1:nrow(col_pairs), function(i) {
  energy_data %>%
    select(all_of(source_col), all_of(col_pairs$year_col[i]), all_of(col_pairs$value_col[i])) %>%
    rename(year = all_of(col_pairs$year_col[i]), value = all_of(col_pairs$value_col[i]))
})

# 将能源源转为列,年份作为行
final_data <- long_data %>%
  pivot_wider(names_from = all_of(source_col), values_from = value) %>%
  arrange(year) # 按年份升序排序(可选)

代码说明

  • 包加载:使用tidyverse包含的dplyr(数据处理)和tidyr(数据重塑)工具,满足全流程操作需求。
  • 列定位:精准筛选年份列(18-140的偶数列)和对应数值列(19-141的奇数列),避免列名混乱导致的错误。
  • 长格式转换:通过map_dfr遍历每一对年份-数值列,将分散的年份和数值整合到统一的year和value列中,为后续重塑做准备。
  • 宽格式转换:用pivot_wider将能源源名称转为列、年份作为行,实现数值按年份与能源源的对应映射。

注意事项

  • 替换代码中的your_data_frame_name为你的实际数据框名称。
  • 替换source_col为你的能源源名称列的真实列名(如"能源类型")。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 05:50:32