R过滤多个组合
R filtering multiple Combinations
使用过滤器过滤多个组合的最efficient/easiest方法是什么?
示例 - 我希望返回 2022 年和第 1 季度、2021 年和第 2 季度等的结果...我不认为下面是 correct/best 查看它的方式:
dataset %>%
filter(year== "2022" & quarter== "1") %>%
filter(year== "2021" & quarter== "4") %>%
filter(year== "2021" & quarter== "3") %>%
filter(year== "2021" & quarter== "2")
您似乎想要 select 一个日期范围。如果将年份和季度合并为一个值,则可以轻松地对它们进行过滤。
示例数据集
df = data.frame(year = c("2000","2000","2000","2000","2001","2001","2001","2001"),
quar = c("1","2","3","4","1","2","3","4")
)
创建组合字段
df <- df %>% mutate(period = paste(df$year, df$quar))
year quar period
1 2000 1 2000 1
2 2000 2 2000 2
3 2000 3 2000 3
4 2000 4 2000 4
5 2001 1 2001 1
6 2001 2 2001 2
7 2001 3 2001 3
8 2001 4 2001 4
确保不要用 .
或 -
分隔值,因为 R 会将它们作为小数点或负号处理。您也可以将它们组合成一个数字(20001、20002 等),但我认为这样会不太清晰。
简单过滤
对于一个范围:
df %>% filter(period >= "2000 3" & period <= "2001 2")
year quar period
1 2000 3 2000 3
2 2000 4 2000 4
3 2001 1 2001 1
4 2001 2 2001 2
对于多个单独的值,使用 OR 运算符 |
:
df %>% filter(period == "2000 1" | period == "2000 3")
year quar period
1 2000 1 2000 1
2 2000 3 2000 3
当然,OR |
和 AND &
都可以组合。请记住使用括号来定义操作顺序:
df %>% filter(period == "2000 1" | (period >= "2000 3" & period <= "2001 2"))
year quar period
1 2000 1 2000 1
2 2000 3 2000 3
3 2000 4 2000 4
4 2001 1 2001 1
5 2001 2 2001 2
使用过滤器过滤多个组合的最efficient/easiest方法是什么?
示例 - 我希望返回 2022 年和第 1 季度、2021 年和第 2 季度等的结果...我不认为下面是 correct/best 查看它的方式:
dataset %>%
filter(year== "2022" & quarter== "1") %>%
filter(year== "2021" & quarter== "4") %>%
filter(year== "2021" & quarter== "3") %>%
filter(year== "2021" & quarter== "2")
您似乎想要 select 一个日期范围。如果将年份和季度合并为一个值,则可以轻松地对它们进行过滤。
示例数据集
df = data.frame(year = c("2000","2000","2000","2000","2001","2001","2001","2001"),
quar = c("1","2","3","4","1","2","3","4")
)
创建组合字段
df <- df %>% mutate(period = paste(df$year, df$quar))
year quar period
1 2000 1 2000 1
2 2000 2 2000 2
3 2000 3 2000 3
4 2000 4 2000 4
5 2001 1 2001 1
6 2001 2 2001 2
7 2001 3 2001 3
8 2001 4 2001 4
确保不要用 .
或 -
分隔值,因为 R 会将它们作为小数点或负号处理。您也可以将它们组合成一个数字(20001、20002 等),但我认为这样会不太清晰。
简单过滤
对于一个范围:
df %>% filter(period >= "2000 3" & period <= "2001 2")
year quar period
1 2000 3 2000 3
2 2000 4 2000 4
3 2001 1 2001 1
4 2001 2 2001 2
对于多个单独的值,使用 OR 运算符 |
:
df %>% filter(period == "2000 1" | period == "2000 3")
year quar period
1 2000 1 2000 1
2 2000 3 2000 3
当然,OR |
和 AND &
都可以组合。请记住使用括号来定义操作顺序:
df %>% filter(period == "2000 1" | (period >= "2000 3" & period <= "2001 2"))
year quar period
1 2000 1 2000 1
2 2000 3 2000 3
3 2000 4 2000 4
4 2001 1 2001 1
5 2001 2 2001 2