0
我试着计算每个组内每个观察值的连续变量(我们称之为'值')的分位数(0至100)在一个新的变量中观察其相应的分位数。R:按赋值分组估计加权分位数
换句话说,每一行是一个观察,每个观察属于一个组。所有的小组都有两个以上的观察结果。在每个组中,我需要使用我的数据中的抽样权重来估计值的分布,确定观察值位于其分布的百分位数,然后将该百分位数作为列添加到数据框中。
据我所知,该survey
封装具有svyby()
和svyquantile()
但是为指定的位数,而不是对于给定的观测值的位数后者返回值。
# Load survey package
library(survey)
# Set seed for replication
set.seed(123)
# Create data with value, group, weight
dat <- data.frame(value = 1:6,
group = rep(1:3,2),
weight = abs(rnorm(6))
# Declare survey design
d <- survey::svydesign(id =~1, data = dat, weights = weight)
# Do something to calculate the quantile and add it to the data
????
这类似于这个问题,但没有被分组完成:Compute quantiles incorporating Sample Design (Survey package)
https://stackoverflow.com/questions/32167390/compute-quantiles-incorporating-sample-design-survey-package/32173435#32173435或https://stackoverflow.com/questions/24587499/compute-多少百分之一富裕集中使用调查数据/ 24590340#24590340 –
对不起,'quantile_by_stype'是由子组,不是吗?我很困惑为什么使用svyby或子集来获得你想要的子群是不够的?谢谢 –
@AnthonyDamico这些似乎可以通过子群来计算分位数,但(a)一旦完成就不会将值添加到前一组中。我最终使用了一个非常黑客的方法,我添加了一个答案。如果有办法加快这个过程,很高兴能够修改! – user3614648