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

如何基于某列值合并数据框观测值并将变量转为新列

解决方案

可以用tidyr包的pivot_wider()函数实现这个转换,配合dplyr的rename()能匹配你想要的列名格式:

library(tidyr)
library(dplyr)

# 原始数据
v1 <- c("Bob", "Bob", "Fred", "Fred")
v2 <- c("Age", "KG", "Age", "KG")
v3 <- c(25, 80, 30, 90)
df <- data.frame(v1,v2,v3)

# 转换为目标宽表格式
df_wide <- df %>%
  pivot_wider(id_cols = v1, names_from = v2, values_from = v3) %>%
  rename(V1 = v1)

df_wide

运行后输出结果:

V1 Age KG
1  Bob  25 80
2 Fred  30 90

参数说明

  • id_cols = v1:指定作为行唯一标识的列(这里是人名列)
  • names_from = v2:指定要转换为新列名的列(这里的Age、KG会成为新表头)
  • values_from = v3:指定填充新列数据的来源列(这里的年龄、体重数值)
  • rename(V1 = v1):将原始列名v1修改为目标格式的V1,不需要的话可以省略这一步

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 03:10:55