Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何结合purrr::map和sjmisc::frq来循环权重?_R_Purrr_Weighted - Fatal编程技术网

如何结合purrr::map和sjmisc::frq来循环权重?

如何结合purrr::map和sjmisc::frq来循环权重?,r,purrr,weighted,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

我有一个数据框,其中包含一些目标变量,即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)
       )
这是我在未加权频率旁边得到的三次输出:

Weights `.x` not found in data.
Weights `.x` not found in data.
Weights `.x` not found in data.
frq函数不接受来自数据帧外部的参数。它需要权重作为数据帧的一部分。也许有办法,但我想不出来

这里有一种方法,我们可以选择权重列并应用frq函数。找到权重列的名称,映射到它们上面,并选择它们以及v1和v2列,将其重命名为某个通用名称,然后在frq中使用该名称来分配权重

library(tidyverse)
library(sjmisc)

weight_names <- grep("wt_", names(df), value = TRUE)

map(weight_names, ~df %>% 
                   select(v1, v2, .x) %>% 
                   rename_at(3, ~"weight") %>%
                   frq(v1, v2, weights = weight))
library(tidyverse)
library(sjmisc)

weight_names <- grep("wt_", names(df), value = TRUE)

map(weight_names, ~df %>% 
                   select(v1, v2, .x) %>% 
                   rename_at(3, ~"weight") %>%
                   frq(v1, v2, weights = weight))