Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在不更改变量格式的情况下使用dplyr筛选日期_R_Filter_Dplyr_Mutated - Fatal编程技术网

在不更改变量格式的情况下使用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()
中有一个
%%>%%