我正在尝试从当前人口调查中的大约900万人记录中准备各种摘要。我有一个数据集,CPS,我希望匹配该数据集中列的多个列名,以及一个参数向量;这些意味着在管道的不同位置进入管道系列的dplyr变换。 (pipechain?管道序列?)
为了实现后者,我已将完成工作的管道放入辅助功能q_m中。我的主要功能q_means然后通过do.call调用q_m,其中包含一个包含主要实际参数的参数列表,并以正式名称命名。
在这种特殊情况下,我试图通过每年的adj_inc分位数范围来考虑adj_inc的加权平均值,但我试图理解如何将此函数构造为一般计算加权分组统计量的模板。我在这种元编程方面相当新,并且在获得需要具有正确范围和评估状态的论据时遇到困难。
目前我收到错误消息
“groups_df_impl中的错误(数据,unname(vars),drop):列.grps
未知”,但我已经使用此功能数小时,并且已经实现了惊人的错误消息多样性。我很确定我的方法或者可能是一些事情,更基本的东西是错误的。
以下是可重现性的小型合成数据集的代码:
set.seed(1776)
rand<- round(abs(rnorm(20, 1000, 50)))
test_dat <- tibble(year=rep(1:2, times=c(10,10)), adj_inc=30001:30020,
wtsupp=5 * rand)
以下是我的功能和参数:
q_m <- function(.dt, .inc, .wts=NULL,
.probs=c(0, .25, .5, .75, 1), .grps){
group_by(.grps)} %>%
mutate(inc2 = .inc,
inc_q_groups =
cut(inc2, breaks = wtd.quantile(
.inc, weights = wts., probs=.probs))) %>%
group_by(inc_q_groups, .grps) %>%
summarise(inc_q_means = wtd.mean(
.inc, weights = .wts)) -> out
out
}
var_lst <- with(data=test_dat, list(.inc=adj_inc,.wts=wtsupp,
.probs=c(0, 0.5, 1)), .grps=year)
q_means <- function(data = test_dat, var_lst){
out <- do.call(q_m, c(list(.dt = data), var_lst))
}
test_output <- q_means(test_dat, var_lst)
我期望的答案,假设非插值版本的分位数等,第1年约为30007.9,30003.0,第2年为30018.0,30013.0。