我有一个数据集,其中包含每个妊娠周出生的婴儿数量。
我正试图根据该特定年份出生婴儿的频率确定分娩的中位胎龄
例如:
<表类>GA num_infants_born tbody><<tr>20周 16 21周 22 22周 34 23周 45 24周 60 25周 67 26周 94 表类>
如果我正确理解了你的问题,你会想要做这样的事情:
# Your gestational data:
gestational_data <- data.frame(GA_weeks = c(20:26),
num_infants_born = c(16,22,34,45,60,67,94))
# See the apply() documentation by running
# ?apply
apply(gestational_data,
1,
function(x){
rep(x[1],x[2])
}) |>
unlist()|>
median()
你想要的是一个加权的中值。首先,您希望周数为数字,如果还不可用,可以使用gsub
dat$GA_num <- as.numeric(gsub('\D', '', dat$GA))
然后,使用matrixStats
包中的weightedMedian
,以婴儿数量为权重。
matrixStats::weightedMedian(dat$GA_num, w=dat$num_infants_born)
# [1] 24.34646
,加权均值有几种定义。要了解更全面的讨论,请看这个答案。
数据:
dat <- structure(list(GA = c("20 weeks", "21 weeks", "22 weeks", "23 weeks",
"24 weeks", "25 weeks", "26 weeks"), num_infants_born = c(16L,
22L, 34L, 45L, 60L, 67L, 94L)), class = "data.frame", row.names = c(NA,
-7L))