在不更改变量格式的情况下使用dplyr筛选日期
我想使用年份列表按日期筛选数据库在不更改变量格式的情况下使用dplyr筛选日期,r,filter,dplyr,mutated,R,Filter,Dplyr,Mutated,我想使用年份列表按日期筛选数据库 years<-c("2014") yearsdata <- data.frame(animal=c("cow","pig"), mydate=c(as.Date("2015-01-01"), as.Date("2014-01-01"))) yearsdata %>% mutate(mydate =format(mydate, "
years<-c("2014")
yearsdata <- data.frame(animal=c("cow","pig"),
mydate=c(as.Date("2015-01-01"),
as.Date("2014-01-01")))
yearsdata %>%
mutate(mydate =format(mydate, "%Y") %>%
as.character()) %>%
filter(is.null(years) | mydate %in% years)
years%
as.character())%>%
筛选器(为.null(年)| mydate%以%年为单位)
上面的代码可以工作并允许我过滤数据集,但它也可以格式化日期列。有没有一种方法可以在完成的子集数据帧中不更改日期列的格式的情况下获得我的筛选结果?所有这些管道都让我头疼,我会这么做
library(data.table)
setDT(yearsdata)[is.null(years) | year(mydate) %in% years]
# animal mydate
# 1: pig 2014-01-01
如果您准备使用lubridate软件包,您可以执行以下操作:
library("lubridate")
yearsdata %>%
filter(is.null(years) | year(mydate) %in% years)
其中:
# animal mydate
# 1 pig 2014-01-01
如果不想格式化日期,请不要用
格式化(mydate)
覆盖mydate
。只需创建一个新列year=format(mydata,“%Y”)
,您可以将其放在select(-year)
末尾。(或者像下面一样使用lubridate。)括号是否放错了位置?您的mutate()
中有一个%%>%%
!