Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.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在两个列表上迭代,然后通过数据帧列表导入dplyr::filter_R_Dplyr_Tidyverse_Purrr - Fatal编程技术网

使用purrr在两个列表上迭代,然后通过数据帧列表导入dplyr::filter

使用purrr在两个列表上迭代,然后通过数据帧列表导入dplyr::filter,r,dplyr,tidyverse,purrr,R,Dplyr,Tidyverse,Purrr,这是问题的继续:“使用Purrr迭代两个列表,然后通过管道进入Dplyr::Filter” 使用下面的示例数据,我首先创建一个数据框(所需的),其中包含要提供给dplyr::filter的值。然后,我使用下面的代码创建结果的数据框 library(tidyverse) library(purrr) 然而,我的实际数据来自三个不同的时间段,跨越三个不同的数据集。对于这个例子,我只是制作了另外两个DF副本,然后将它们放入一个列表中 map2_dfr(wanted$School, wanted$Co

这是问题的继续:“使用Purrr迭代两个列表,然后通过管道进入Dplyr::Filter”

使用下面的示例数据,我首先创建一个数据框(
所需的
),其中包含要提供给
dplyr::filter
的值。然后,我使用下面的代码创建结果的数据框

library(tidyverse)
library(purrr)
然而,我的实际数据来自三个不同的时间段,跨越三个不同的数据集。对于这个例子,我只是制作了另外两个DF副本,然后将它们放入一个列表中

map2_dfr(wanted$School, wanted$Code, ~filter(DF, School == .x, Code == .y)) %>% 
group_by(School, Code) %>% 
summarise_all(sum)
这就是我被困的地方。我想将上述两种方法结合起来,以便迭代
所需的
,将这些值输入到
dplyr::filter
,但现在我必须跨数据帧列表执行此操作,并输出三个数据帧的列表

我正在与下面的代码做斗争…这不起作用。有什么建议吗?使用如此多的
地图
似乎也不是最好的方法

DFList %>%
   map(~filter(.x, School == "School1", Code == "B344")) %>%
   map(~group_by(.x, School, Code)) %>%
   map(~summarise(.x, Count = sum(Question1)))
样本数据:

map2_dfr(Wanted$School, Wanted$Code, 
    ~DFList %>% 
        map(~filter(.x, School == .x, Code == .y) %>% 
        map(~group_by(.x, Code, School) %>% 
        map(~summarise(.x, Count = sum(Question1))))))

code由于列表中的数据帧的格式相同,只需使用
dplyr::bind_rows
将它们强制为单个数据帧,通过传递
.id
参数保存元素名称,该参数可通过加入
所需的
进行过滤后用于分组:

库(tidyverse)
DF%
分组人(身份证、学校、代码)%>%
总结所有(总和)
#>加入,由=c(“代码”、“学校”)
#>#tibble:6 x 5
#>#组:id、学校[?]
#>id学校代码问题1问题2
#>                 
#>1学校1 B344 7.00 8.00
#>2 1学校2 S300 15.0 14.0
#>3 2学校1 B344 7.00 8.00
#>4 2学校2 S300 15.0 14.0
#>5 3学校1 B344 7.00 8.00
#>6 3学校2 S300 15.0 14.0
map2_dfr(Wanted$School, Wanted$Code, 
    ~DFList %>% 
        map(~filter(.x, School == .x, Code == .y) %>% 
        map(~group_by(.x, Code, School) %>% 
        map(~summarise(.x, Count = sum(Question1))))))
Code <- c("B344","B555","S300","T220","B888","B888","B555","B344","B344","T220","B555","B555","S300","B555","S300","S300","S300","S300","B344","B344","B888","B888","B888")
School <- c("School1","School1","School2","School3","School4","School4","School1","School1","School3","School3","School4","School1","School1","School3","School2","School2","    School4","School2","School3","School4","School3","School1","School2")
Question1 <- c(3,4,5,4,5,5,5,4,5,3,4,5,4,5,4,3,3,3,4,5,4,3,3)
Question2 <- c(5,4,3,4,3,5,4,3,2,3,4,5,4,5,4,3,4,4,5,4,3,3,4)
DF <- data_frame(Code, School, Question1, Question2)

wanted <- data_frame(School = c("School2", "School1"),
                     Code = c("S300", "B344"))