Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.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
使用嵌套查找表在第二个表中查找高于阈值的值,并在R中对其进行量化_R_Loops_Nested_Quantile - Fatal编程技术网

使用嵌套查找表在第二个表中查找高于阈值的值,并在R中对其进行量化

使用嵌套查找表在第二个表中查找高于阈值的值,并在R中对其进行量化,r,loops,nested,quantile,R,Loops,Nested,Quantile,我正在用R语言分析河流流量数据,我有两个嵌套列表。First保存来自不同河段的数据(流量测试),称为数字,如910、950、1012和1087。我每天有数百次流量测量(Flow),但在我准备年度统计数据时,准确的日期和月份并不重要。每个测量(流量)都参考流量测试表中的一年 Flowtest <- list("910" = tibble(Year = c(2004, 2004, 2005, 2005, 2007, 2008, 2008), Flow=c(123, 170,

我正在用R语言分析河流流量数据,我有两个嵌套列表。First保存来自不同河段的数据(流量测试),称为数字,如910、950、1012和1087。我每天有数百次流量测量(Flow),但在我准备年度统计数据时,准确的日期和月份并不重要。每个测量(流量)都参考流量测试表中的一年

Flowtest <- list("910" = tibble(Year = c(2004, 2004, 2005, 2005, 2007, 2008, 2008), Flow=c(123, 170, 187, 245, 679, 870, 820)),
                 "950" = tibble(Year = c(2004, 2005, 2005, 2005, 2006, 2008, 2008), Flow=c(570, 450, 780, 650, 230, 470, 340)),
                 "1012" = tibble(Year = c(2005, 2005, 2005, 2005, 2007, 2008, 2008), Flow=c(160, 170, 670, 780, 350, 840, 850)),
                 "1087" = tibble(Year = c(2004, 2005, 2005, 2007, 2007, 2008, 2008), Flow=c(120, 780, 820, 580, 870, 870, 840)))

Flowtest您可以将
Map
aggregate
组合使用:

Map(function(x, y) aggregate(Flow > Q3~Year, merge(x, y, all = TRUE,
          na.action = 'na.pass'), sum, na.rm = TRUE, na.action = 'na.pass'), 
          Flowtest, RCHtest)
这将返回:

#$`910`
#  Year Flow > Q3
#1 2004         0
#2 2005         0
#3 2006         0
#4 2007         1
#5 2008         2

#$`950`
#  Year Flow > Q3
#1 2004         1
#2 2005         1
#3 2006         0
#4 2007         0
#5 2008         0

#$`1012`
#  Year Flow > Q3
#1 2004         0
#2 2005         0
#3 2006         0
#4 2007         0
#5 2008         2

#$`1087`
#  Year Flow > Q3
#1 2004         0
#2 2005         1
#3 2006         0
#4 2007         2
#5 2008         2

如果要使用
tidyverse
功能执行此操作,可以执行以下操作:

library(dplyr)
library(purrr)

map2(Flowtest, RCHtest, ~full_join(.x, .y) %>%
                          group_by(Year) %>%
                          summarise(sum = sum(Flow > Q3, na.rm = TRUE)))
#$`910`
#  Year Flow > Q3
#1 2004         0
#2 2005         0
#3 2006         0
#4 2007         1
#5 2008         2

#$`950`
#  Year Flow > Q3
#1 2004         1
#2 2005         1
#3 2006         0
#4 2007         0
#5 2008         0

#$`1012`
#  Year Flow > Q3
#1 2004         0
#2 2005         0
#3 2006         0
#4 2007         0
#5 2008         2

#$`1087`
#  Year Flow > Q3
#1 2004         0
#2 2005         1
#3 2006         0
#4 2007         2
#5 2008         2
library(dplyr)
library(purrr)

map2(Flowtest, RCHtest, ~full_join(.x, .y) %>%
                          group_by(Year) %>%
                          summarise(sum = sum(Flow > Q3, na.rm = TRUE)))