如何结合purrr :: map和sjmisc :: frq遍历权重?

时间:2019-06-27 09:31:08

标签: r purrr weighted

我有一个数据帧,其中包含一些目标变量(即v1和v2)和一些权重(即wt1,wt2,wt3)。我想生成目标变量的加权频率,但每次都使用一个权重。换句话说,我想将频率表复制三次,每次复制使用不同的权重。

library(tidyverse)
library(sjmisc)

 df <- tibble(v1 = rbinom(10, 1, .5), 
       v2 = rbinom(10, 1, .5), 
       wt_1 = runif(10, 0, 2), 
       wt_2 = runif(10, 0, 2), 
       wt_3 = runif(10, 0, 2)
       )

我尝试了不同的方法,例如:

df %>% 
  select(starts_with("wt_")) %>% 
  map(~frq(select(df, v1, v2), weights = .x))

这是我在未加权频率旁边(三次)得到的输出:

Weights `.x` not found in data.
Weights `.x` not found in data.
Weights `.x` not found in data.

1 个答案:

答案 0 :(得分:1)

frq函数将不接受来自数据框外部的参数。它需要weight才能成为数据框的一部分。也许有办法,但我不知道。

在这里,我们可以选择权重列并应用frq函数。找到权重列的名称,在其上mapselect以及v1v2列中进行选择,将其重命名为某个通用名称,然后在{{ 1}}来分配权重。

frq