我有一個操作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來生成使用β分佈和α和β爲
同樣地,我想要的參數的概率用nmnme和nm_se作爲均值和sd使用正態分佈生成隨機數。
我然後把要乘以RNORM值產生的rbeta值和提取的第50,第25和第75位數返回到數據幀
因此,作爲一個例子對行1
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的產品附加到數據庫中。
在SO中搜索'[r] data frame apply rows'會給你很多好的答案。 TL DR:使用'apply'可能會產生問題,因爲它將data.frame轉換爲一個'array'('matrix'),它可能將數字轉換爲字符。矢量化計算,循環,'plyr'和'dplyr'是你的朋友。 – r2evans
「分位數」可以採用概率向量。 – shayaa