如何简化给定日期的过滤器代码
How to simplify the filter code for given days
当从数据框中过滤某些天的值时,我必须在过滤条件语句中重复 'as.Date' 很多次。
有什么办法可以简化吗?谢谢!
library(tidyverse)
test_data <- data.frame(mday=seq.Date(as.Date('2021-1-1'),
as.Date('2021-12-30'),by="1 day"),
value=rnorm(364))
# can't work
test_data %>% filter(mday %in% c(as.Date('2021-1-1','2021-7-1','2021-10-7')))
# can work, but have to repeat 'as.date' many times
test_data %>% filter(mday %in% c(as.Date('2021-1-1'),
as.Date('2021-7-1'),
as.Date('2021-10-7')))
你很接近。应该是:
test_data %>% filter(mday %in% as.Date(c('2021-1-1','2021-7-1','2021-10-7')))
这是因为首先您需要创建一个矢量,即使用 c()
函数,然后您可以对该矢量进行修改,在您的情况下 - 将矢量更改为 date
。
当从数据框中过滤某些天的值时,我必须在过滤条件语句中重复 'as.Date' 很多次。 有什么办法可以简化吗?谢谢!
library(tidyverse)
test_data <- data.frame(mday=seq.Date(as.Date('2021-1-1'),
as.Date('2021-12-30'),by="1 day"),
value=rnorm(364))
# can't work
test_data %>% filter(mday %in% c(as.Date('2021-1-1','2021-7-1','2021-10-7')))
# can work, but have to repeat 'as.date' many times
test_data %>% filter(mday %in% c(as.Date('2021-1-1'),
as.Date('2021-7-1'),
as.Date('2021-10-7')))
你很接近。应该是:
test_data %>% filter(mday %in% as.Date(c('2021-1-1','2021-7-1','2021-10-7')))
这是因为首先您需要创建一个矢量,即使用 c()
函数,然后您可以对该矢量进行修改,在您的情况下 - 将矢量更改为 date
。