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

使用mutate和group_by调用需向量的自定义函数处理分组数据框特定列

使用dplyr的group_by + mutate结合自定义函数处理分组数据

看起来你已经有了分组的示例数据和自定义的power.sequential函数,核心需求是按group列拆分数据后,把期望向量nseq、pseq传给函数,再把结果整合回原数据框对吧?我来帮你梳理具体的实现方式:

首先先把你的示例代码整理清晰:

# 示例数据
my_data <- data.frame(
  N = c(12, 12, 24, 24, 12, 12),
  p = rep(c(.125,.125,.025), 2),
  group = rep(c("dogs","cats"), each=3)
)

# 你的自定义函数(原代码未完成,这里保留现有结构)
power.sequential <- function(d, nseq, pseq){
  decvec <- NULL
  nvec <- NULL
  for (i in 1:100){
    decvec[i] <- 0
    nvec[i] <- 0
    j <- 1
    x <- NULL
    while(decvec[i] == 0 & nvec[i] < sum(nseq)){
      x <- c(x, rnorm(nseq[j], mean = ...)) # 这里需要补充完整的均值逻辑
      # 此处应该添加判断decvec[i]是否更新的逻辑
      j <- j + 1
    }
    # 函数需要返回最终计算结果,比如模拟的power值或统计量
  }
  # 返回处理后的结果(建议返回数据框或向量,方便和原数据整合)
}

核心实现方案

我们可以用dplyr的分组工具,结合cur_data()获取当前分组的子数据框,把它和期望向量一起传给自定义函数:

情况1:函数返回每组的单个汇总值

如果你的函数最终输出每组的一个统计结果(比如分组的power值),可以这样写:

library(dplyr)

# 先补全函数的简单示例(方便演示)
power.sequential <- function(d, nseq, pseq){
  # 这里用加权和模拟你的计算逻辑,实际替换成你的完整代码
  group_power <- sum(d$N * d$p) * mean(nseq)
  return(data.frame(power = group_power))
}

# 分组应用函数,新增结果列
processed_data <- my_data %>%
  group_by(group) %>%
  mutate(group_power = power.sequential(cur_data(), nseq = c(12,24), pseq = c(0.125, 0.025))$power) %>%
  ungroup()

print(processed_data)

情况2:函数返回每行的计算结果

如果需要对分组内的每一行单独处理,结合purrr的pmap系列函数更方便:

library(dplyr)
library(purrr)

# 修改函数为处理单行数据的逻辑
power.sequential_row <- function(row, nseq, pseq){
  # 针对单行计算,比如N乘以pseq的标准差
  row_result <- row$N * sd(pseq)
  return(row_result)
}

# 分组后逐行应用函数
processed_row_data <- my_data %>%
  group_by(group) %>%
  mutate(row_result = pmap_dbl(., power.sequential_row, nseq = c(12,24), pseq = c(0.125, 0.025))) %>%
  ungroup()

print(processed_row_data)

注意事项

  • cur_data()是dplyr里的实用函数,能在分组操作中获取当前组的子数据框,刚好匹配你的函数参数d
  • 确保自定义函数的返回值类型和mutate预期一致:如果是单个值,会自动广播到整个分组;如果是向量,长度要和分组的行数匹配
  • 你的原函数里有循环和模拟逻辑,建议最终返回明确的结果(比如数据框),这样和原数据整合时更不容易出错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:08:18