【发布时间】:2020-11-18 12:30:53
【问题描述】:
我有一个问题是我之前提出的问题的延伸Using a nested lookup table to find values above thresholds in second table and quantify them in R 这次我有一个包含数据框的列表。 我正在用 R 语言分析河流流量数据,我有两个列表。首先保存来自不同河流河段的两个不同投影(Flowtest1 和 Flowtest2)的数据(Flowtest_all),称为数字,例如 910 和 950。我每天有数百个流量测量值(Flow)。
Flowtest1 <- list("910" = tibble(Flow=c(123, 170, 187, 245, 679, 870, 820)),
"950" = tibble(Flow=c(570, 450, 780, 650, 230, 470, 340)))
Flowtest2 <- list("910" = tibble(Flow=c(167, 125, 287, 345, 570, 789, 825)),
"950" = tibble(Flow=c(573, 427, 717, 682, 237, 510, 376)))
Flowtest_all <- list(Flowtest1, Flowtest2)
名为 RCH_all 的列表的第二个列表用作查找表,它还包含来自两个不同投影(RCH1 和 RCH2)的数据。我在与 Flowtest_all 不同的流量数据集上计算了 0.75% 百分位数 (Q3) 的值(所以我不想使用为 Flowtest_all 计算的 Q3)。 Flowtest_all 和 RCH_all 中分析的年份和河流范围相同。
RCH1 <- list("910" = data.frame( Q3=650),
"950" = data.frame(Q3=550))
RCH2 <- list("910" = data.frame(Q3=670),
"950" = data.frame(Q3= 570))
RCH_all <- list(RCH1, RCH2)
我想要获得的是来自 Flowtest_all 的流量值的数量,该数量低于每个子流域的 RCH_all 中匹配 Q3 中指定的阈值。
我想获得一个看起来像 Result_all <- list (Resulttest1, Resulttest2) 的结果
地点:
Resulttest1 <- list("910" = data.frame( aboveQ3=3),
"950" = data.frame( aboveQ3=3))
Resulttest2 <- list("910" = data.frame( aboveQ3=2),
"950" = data.frame( aboveQ3=3))
我尝试了下面的代码,但它产生了一个错误:
test <- Map(function(x, y) aggregate( Flow > Q3, merge(x, y, all = TRUE, na.action = 'na.pass'), sum, na.rm = TRUE, na.action = 'na.pass'), Flowtest_all, RCH_all)
错误:
聚合错误(流 > Q3,合并(x,y,所有 = TRUE,na.action = "na.pass"), : 找不到对象“流”
请帮忙!
【问题讨论】: