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

如何在R中执行Pivot操作并保留数据框的其余列

解决方法

你可以用tidyr包的pivot_wider或者data.table包的dcast实现需求,核心是明确指定需要保留的分组列(ID_A和Value_B),避免丢失信息。

先构造输入数据框

df <- data.frame(
  ID_A = c(1,1,2,2),
  Value_A = c(0.2, 0.1, 0.5, -0.3),
  Boolean = c(1,0,1,0),
  Value_B = c(-2,-2,1,1)
)

方法1:使用tidyr::pivot_wider

通过id_cols指定保留的行标识列,names_from和values_from分别指定拆分依据列和取值列,names_glue自定义输出列名:

library(tidyr)

df_wide <- pivot_wider(
  df,
  id_cols = c(ID_A, Value_B),  # 将这两列作为行的唯一标识
  names_from = Boolean,        # 基于Boolean列拆分列
  values_from = Value_A,       # 取值来源为Value_A列
  names_glue = "Value_A_Boo_{Boolean}"  # 设置输出列的命名格式
)

方法2:使用data.table::dcast

通过公式指定行分组列(ID_A + Value_B)和列名规则,value.var指定取值列:

library(data.table)

setDT(df)
df_wide <- dcast(
  df, 
  ID_A + Value_B ~ paste0("Value_A_Boo_", Boolean), 
  value.var = "Value_A"
)

两种方法都会得到你需要的输出数据框,关键是确保把ID_A和Value_B都纳入分组/行标识,这样就不会丢失这些列的信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 16:25:29