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

如何基于外部变量nFinal在dplyr的summarise中动态生成指定数量val列

实现方案

你可以直接通过先计算加权频次表再转宽的方式实现,完全不用硬编码列,适配任意nFinal取值,加权表仅计算1次性能更高:

library(dplyr)
library(tibble)
library(questionr)

# 动态配置的nFinal,可任意修改为整数
nFinal <- 10

# 自动适配nFinal的示例数据生成
graphData <- tibble(
  y = rep(1:nFinal, 2),
  ponde = runif(nFinal * 2, min = 0, max = 1)
)

# 核心逻辑:动态生成对应数量的val列
totalData <- graphData %>%
  with(prop.table(wtd.table(y, weights = ponde)) * 100) %>%
  as.list() %>%
  as_tibble(.name_repair = ~ paste0("val", seq_along(.x)))

如果你希望保持summarise的写法,也可以用dplyr的动态列生成语法实现:

totalData <- graphData %>%
  summarise(
    across(1:nFinal, 
           ~ prop.table(questionr::wtd.table(y, weights = ponde))[.x],
           .names = "val{.col}") * 100
  )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 11:09:01