我想运行一个自定义函数,该函数使用按组拆分的数据框的特定列。这是我的样本数据&功能代码:
power.sequential(d = .5,
nseq = c(12,12,24),
pseq = c(.125,.125,.025))
现在我想在我的数据帧中的每个组上运行此函数。这就是函数正常调用的方式:
my_data %>% group_by(group) %>%
mutate(result = power.sequential(d=.5,nseq=N,pseq=p))
该函数返回两个值,理想情况下,它们将保存在我的数据帧的单独列中。 这是我最好的尝试,但它给出了一条错误消息:
group power meanN
dogs .94 20.28
cats .95 27.36
我可能需要重塑我的数据帧,以便每个组都是一行,但我仍然坚持如何继续。
这是我想要的输出,该函数输出两个值(power和meanN),每个值都应该有自己的列。
{{1}}
答案 0 :(得分:1)
你可以这样做:
my_data %>%
group_by(group) %>%
do(data.frame(power.sequential(d=.5,nseq=.$N,pseq=.$p)[c(1, 2)])) %>%
data.frame()
这给出了:
group power mean_N
1 cats 0.96 27.24
2 dogs 0.94 21.12
答案 1 :(得分:1)
使用data.table
可以简化任务。可以直接调用' j`部分中的函数,这两个值将显示为单独的列。
library(data.table)
setDT(my_data)
set.seed(1)
my_data[,power.sequential(0.5, N, p), by=group]
# group power mean_N
# 1: dogs 0.90 24.48
# 2: cats 0.94 27.72
注意:set.seed(1)
已用于保持结果一致。