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

R Studio中如何将data frame列名转为Year列、列值转为Values列

把宽格式数据框转换为长格式(Year + Values)

你的数据属于宽格式(年份作为列名,每列对应对应年份的数值),要转换成目标的长格式(两列:Year存年份、Values存对应数值),用R里的tidyverse工具包最适合新手操作,步骤如下:

方法一:使用tidyr::pivot_longer(推荐)

  1. 安装并加载tidyverse包(第一次使用需要安装,之后只需加载)
install.packages("tidyverse")
library(tidyverse)
  1. 执行格式转换(假设你的数据框名为df,如果实际名称不同,替换成你的数据框名)
# 将除了Country列之外的所有列转成长格式
df_long <- df %>%
  pivot_longer(
    cols = -Country,          # 指定不需要转换的列(这里是Country)
    names_to = "Year",        # 原列名(年份)存入新列Year
    values_to = "Values"      # 原列的数值存入新列Values
  )

# 查看转换结果的前几行
head(df_long)
  1. 可选:如果Year列是字符型(比如"2001"),转成数值型
df_long <- df_long %>%
  mutate(Year = as.numeric(Year))

方法二:使用基础R的reshape函数

如果不想安装额外包,用基础R的reshape函数也能实现:

df_long <- reshape(
  df,
  direction = "long",
  varying = colnames(df)[-1],  # 指定要转换的年份列(除了Country)
  v.names = "Values",          # 数值列的名称
  timevar = "Year",            # 年份列的名称
  times = colnames(df)[-1]     # 年份值来自原列名
)

# 整理行名和列顺序
rownames(df_long) <- NULL
df_long <- df_long[, c("Country", "Year", "Values")]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 08:06:51