gpt4 book ai didi

r - 对每一行的元素应用一个函数,然后总结

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

我有一个关于在 data.frame 中操作数据的问题。

基本上我有一个大数据集 - 下面是缩写版本:

structure(list(nm_mean = c(194213914.326, 194213914.326, 194213914.326, 
194213914.326, 194213914.326, 217947112.739), nm_se = c(9984735.05918367,
9984735.05918367, 9984735.05918367, 9984735.05918367, 9984735.05918367,
11010386.0760204), alpha = c(193.197697846336, 214.592588477741,
240.246557258741, 258.116959355425, 282.560024775668, 306.610038660465
), beta = c(61526.2664158025, 57950.9563448233, 56085.1512614369,
52919.4794239927, 51483.4591654126, 50405.8186695088)), .Names = c("nm_mean",
"nm_se", "alpha", "beta"), row.names = c(NA, 6L), class = "data.frame")

我想使用 rbeta 以 beta 分布和 alpha 和 beta 作为参数来生成概率

同样,我想使用 rnorm 生成随机数,使用以 nm_mean 和 nm_se 作为均值和 sd 的正态分布。

然后我想将由 rnorm 值生成的 rbeta 值相乘,并将第 50、25 和 75 分位数提取回数据帧

以第一行为例

x <- rbeta(1000,193.1977,61526.27)
y <- rnorm(1000,194213914,9984735)
z <- x*y

dat$ce <- quantile(z,0.5)
dat$ll <- quantile(z,0.25)
dat$ul <- quantile(z,0.975)

本质上,我得到了 rbeta 和 rnorm 的乘积的 ce、ll 和 ul 追加回数据库。

最佳答案

受到@HackR 代码的启发,我认为是函数式矢量化版本:

set.seed(42)
n <- 1000
nrows <- nrow(dat)
rn <- matrix(rnorm(nrows * n, dat$nm_mean, dat$nm_se), ncol = nrows, byrow = TRUE)
rb <- matrix(rbeta(nrows * n, shape1 = dat$alpha, shape2 = dat$beta),
ncol = nrows, byrow = TRUE)
cbind(dat,
structure(t(apply(rn * rb, 2, function(z) quantile(z, c(0.5, 0.25, 0.975)))),
.Dimnames = list(NULL, c("ce", "ll", "ul"))))
# nm_mean nm_se alpha beta ce ll ul
# 1 194213914 9984735 193.1977 61526.27 608455.3 570100.5 710373.6
# 2 194213914 9984735 214.5926 57950.96 715305.0 677754.3 856570.7
# 3 194213914 9984735 240.2466 56085.15 825143.7 778351.2 979361.1
# 4 194213914 9984735 258.1170 52919.48 943261.4 895832.6 1091899.3
# 5 194213914 9984735 282.5600 51483.46 1054514.3 995640.8 1226176.4
# 6 217947113 11010386 306.6100 50405.82 1312325.0 1247030.8 1515630.5

关于r - 对每一行的元素应用一个函数,然后总结,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39111892/

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