2

年のリストを使用して、データベースを日付でフィルター処理したい

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)

上記のコードは機能し、データセットをフィルタリングできますが、日付列もフォーマットします。完成したサブセット データフレームで日付列の形式を変更せずにフィルター結果を取得する方法はありますか?

4

2 に答える 2

7

パッケージを使用する準備ができている場合は、次のlubridateことができます。

library("lubridate")

yearsdata %>%
  filter(is.null(years) | year(mydate) %in% years)

これにより、次のことが得られます。

#   animal     mydate
# 1    pig 2014-01-01
于 2015-05-12T19:11:39.527 に答える
5

これらのパイプはすべて頭が痛くなります。

library(data.table)
setDT(yearsdata)[is.null(years) | year(mydate) %in% years]
#    animal     mydate
# 1:    pig 2014-01-01
于 2015-05-12T19:10:37.967 に答える