gpt4 book ai didi

r - 如何在数据框的每一行上执行一个函数,并且只将输出的一个元素作为该行中的新列插入

转载 作者:行者123 更新时间:2023-12-04 17:28:10 25 4
gpt4 key购买 nike

对两个值进行精确二项式检验很容易,但是如果想要对一大堆成功次数和试验次数进行检验会发生什么。我创建了一个测试敏感性数据框,研究中的潜在参与者数量,然后对于每一行,我计算成功的可能性。这是代码。

sens <-seq(from=.1, to=.5, by=0.05)
enroll <-seq(from=20, to=200, by=20)
df <-expand.grid(sens=sens,enroll=enroll)
df <-transform(df,succes=sens*enroll)

但是现在我如何使用每一行的成功和试验次数的组合来进行二项式检验。

我只对二项式检验的 95% 置信区间的上限感兴趣。我希望将该单个数字作为名为“upper.limit”的列添加到数据框中

我想到了一些类似的东西
binom.test(succes,enroll)$conf.int    

唉,conf.int 给出了诸如

[1] 0.1266556 0.2918427
attr(,"conf.level")
[1] 0.95

我想要的只是 0.2918427

此外,我有一种感觉,必须在某处进行 do.call,甚至可能是 lapply,但我不知道这将如何贯穿整个数据框。或者我应该使用plyr?

显然我的头在旋转。请让它停止。

最佳答案

如果这给了你(几乎)你想要的,那么试试这个:

binom.test(succes,enroll)$conf.int[2]

并按原样全面或跨行应用:
> df$UCL <- apply(df, 1, function(x)  binom.test(x[3],x[2])$conf.int[2] )
> head(df)
sens enroll succes UCL
1 0.10 20 2 0.3169827
2 0.15 20 3 0.3789268
3 0.20 20 4 0.4366140
4 0.25 20 5 0.4910459
5 0.30 20 6 0.5427892
6 0.35 20 7 0.5921885

关于r - 如何在数据框的每一行上执行一个函数,并且只将输出的一个元素作为该行中的新列插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4272735/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com