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

R语言如何将数据框除month、type外的所有列从长格式转为宽格式

实现方案

方案1:tidyverse包pivot_wider实现(推荐,适配多列无需手动指定列名)

library(tidyverse)

# 你的原数据
aa <- tibble(month = c(1, 1, 2, 2), 
                 type = c("most", "least", "most", "least"),
                 value = c(0.2, 0.8, 1, 0.1),
                 NP = c(4, 2, 0, 6),
                 NO = c(1, 5, 2, 4))

# 转换代码
bb <- aa %>%
  pivot_wider(
    id_cols = month,
    names_from = type,
    values_from = !c(month, type),
    names_sep = "_"
  )

参数说明:

  • values_from = !c(month, type):自动选择除month、type之外的所有列作为数值列,列数再多也无需手动调整
  • names_sep = "_":指定列名拼接符为下划线,完全符合要求的「原列名+下划线+type取值」的命名规则

方案2:R基础包reshape实现(无需安装第三方包)

bb <- reshape(
  aa,
  idvar = "month",
  timevar = "type",
  direction = "wide",
  sep = "_"
)

# 可选:如需调整列顺序和示例完全一致,可补充以下代码
bb <- bb[, c("month", sort(colnames(bb)[-1]))]

两种方案输出结果和要求的bb结构完全一致,均支持任意数量的待转换数值列,无需额外修改配置。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 15:36:00