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

在R中如何翻转dataframe,将Var列的取值转换为表格表头?

R长表转宽表实现方案

你需要的是长格式数据转宽格式的操作,R有成熟的高效实现方案,无需手动转置处理:

方法1:tidyverse 生态 pivot_wider 函数(推荐,效率高易上手)

如果未安装tidyverse先执行安装:install.packages("tidyverse")
操作代码示例:

library(tidyverse)

# 构造你的示例数据
df <- data.frame(
  Var = rep(c("A","B","C","D","E"), 2),
  Result = c(0.1, NA, 2.5, NA, NA, 0.45, NA, NA, 2.2, 0.13),
  Location = rep(c("FL", "GA"), each = 5)
)

# 执行宽表转换
df_wide <- df %>%
  pivot_wider(
    id_cols = Location, # 保留为行标识的列
    names_from = Var, # 取值作为新列名的列
    values_from = Result # 填充到新列的数值来源列
  )

转换后输出结果:

# A tibble: 2 × 6
  Location     A     B     C     D     E
  <chr>    <dbl> <lgl> <dbl> <dbl> <dbl>
1 FL        0.10 NA      2.5  NA    NA  
2 GA        0.45 NA     NA     2.2  0.13
  • 注意:如果同一个Location下同一个Var存在多个Result值,可添加values_fn参数指定聚合规则,例如求和用values_fn = sum、多值拼接用values_fn = ~paste(., collapse = ";"),避免生成列表列。

方法2:基础R原生实现(无需安装第三方包)

用内置reshape函数即可完成转换:

df_wide <- reshape(
  df,
  idvar = "Location",
  timevar = "Var",
  direction = "wide"
)
# 去掉默认生成的列名前缀
colnames(df_wide) <- sub("Result\\.", "", colnames(df_wide))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 15:54:05