我尝试从数据库的两列中抽取随机样本(工作时数和就诊患者的相对数量),然后逐步计算平均值,即前两个样本之间的平均值,然后是刚刚计算的平均值和第三个样本之间的平均值......以此类推。
有可能吗?有什么功能吗?
谢谢你们的帮助。
L型
我就是这样提取样本的。
library(dplyr)
set.seed(2020)
obs <- rnorm(10, mean = 0, sd = 1)
time <- rnorm(10, mean = 0.5, sd = 1)
rdf <- data.frame(obs, time)
sample_n(rdf, 1)
p <- replicate(100, expr = (sample_n(rdf, 1) + sample_n(rdf, 1))/2)
3条答案
按热度按时间gzszwxb41#
一种选择是使用for循环并确定所需的样本数。例如,如果我们想取5个样本并逐步计算平均值,我们可以执行一个循环,从第一个样本开始,迭代选择下一个样本。然后计算前一个平均值和下一个样本之间的平均值:
deyfvvtc2#
您可以定义递归函数(调用自身的函数)。
你可能要increase you C stack size。
但是您也可以使用
for
循环。这里是两个版本的快速基准测试(R=2K),递归看起来几乎快两倍。
fjaof16o3#
另一种方法(使用示例数据
rdf
):mean_of_random_pair(xs)
,该函数从集合xs
中抽取两个随机项并计算它们的平均值:cumulative_mean
,该函数计算总平均值X作为现有X和新项目x的平均值:将上述函数链接到管道中,并在集合
rdf$obs
上运行runs
次:输出(迭代平均序列):
检查输出(n = 5000次模拟运行):