r - 使用多个变量过滤两次并计算行数
问题描述
我有这个按 id_station、id_parameter、“zona”及其日期分组的数据框。
id_station id_parameter zona year month day mediaDiaria sdDiaria Count
1 AJM CO SO 2019 1 1 0.281 0.181 21
2 AJM CO SO 2019 1 2 0.367 0.230 24
3 AJM CO SO 2019 1 3 0.371 0.160 24
4 AJM CO SO 2019 1 4 0.312 0.185 24
5 AJM CO SO 2019 1 5 0.296 0.168 24
6 AJM CO SO 2019 1 6 0.225 0.142 24
7 AJM CO SO 2019 1 7 0.281 0.0873 21
8 AJM CO SO 2019 1 8 0.388 0.236 24
9 AJM CO SO 2019 1 9 0.421 0.265 24
10 AJM CO SO 2019 1 10 0.225 0.103 24
我想做的是过滤 2019 年 3 月 1 日至 2020 年 2 月 29 日。我会将其视为“第 1 年”。之后,我想计算第 1 年和每个 id_station 中的 Count 行数,以消除 Count > 18 的行数少于 275 行(天)的站中的所有行。
我用过滤器尝试了以下操作:
Year1in2019CO <- datosCO %>%
filter(year == 2019, month %in% c(3:12)) %>%
group_by(id_station, id_parameter, zona, year, month, day) %>%
summarise(mediaDiaria = mean(valor, na.rm = TRUE), sdDiaria = sd(valor, na.rm = TRUE),
Count = sum(!is.na(valor)))
Year1in2020CO <- datosCO %>%
filter(year == 2020, month %in% c(1:2)) %>%
group_by(id_station, id_parameter, zona, year, month, day) %>%
summarise(mediaDiaria = mean(valor, na.rm = TRUE), sdDiaria = sd(valor, na.rm = TRUE),
Count = sum(!is.na(valor)))
Year1CO <- bind_rows(Year1in2019CO, Year1in2020CO)
它完成了这项工作。但是有没有办法在只创建一个数据框而不是 3 个的同时做到这一点?
我已经尝试了以下计数行部分:
YEAR1dfCO_2 <- Year1CO %>%
group_by(id_station) %>%
summarise(dws = sum(Count > 18))
虽然它确实为我提供了我需要的东西,但我不知道如何从原始数据集 (Year1CO) 中删除第 1 年计数中少于 275 行(> 18)的站的所有数据。
你能帮我么?
解决方案
这可能会奏效。首先,使用构造日期过滤第 1 年的行,然后根据您描述的条件删除站点。
library(tidyverse)
yr1 <- datosCO %>%
mutate(d = as.Date(paste(year, month, day, sep = "-"))) %>%
filter(between(d, as.Date("2019-03-01"), as.Date("2020-02-29"))) %>%
group_by(id_station, id_parameter, zona, d) %>%
summarise(mediaDiaria = mean(valor, na.rm = TRUE),
sdDiaria = sd(valor, na.rm = TRUE),
Count = sum(!is.na(valor)))
yr1 %>%
group_by(id_station) %>%
filter(sum(Count > 18) < 275) %>%
ungroup()
推荐阅读
- gnupg - Yubikey 如何与 GPG 配合使用?
- css - 更改特定页面上的徽标和主菜单颜色
- sql - 返回具有另一个值的所有字段的 SQL 值 - 如果存在另一个值
- javascript - javascript从对象访问外部变量
- java - 如何使 JTable 中的单元格为空直到被点击?
- javascript - 比较 Javascript Ajax 响应与字符串
- javascript - “document.forms.value”-在 Microsoft Edge 中未定义
- typescript - Angular 6 - 如何以正确的方式从另一个异步函数中的异步函数回调中获取价值?
- ios - 如何检查整数值是否为 0 或因为它为空,所以将其值设为 0
- jquery - 如何读取选定的行(tr)列(td)数据属性