【问题标题】:How to change the date format & remove rows from dataframe before certain date R Studio如何在某个日期 RStudio 之前更改日期格式并从数据框中删除行
【发布时间】:2019-11-13 17:37:02
【问题描述】:

我有一个包含超过 880 万个观察值的数据框,我需要在某个日期之前从数据框中删除行。目前日期格式为 MM/DD/YYYY,但我想将其转换为 R 日期格式(我相信 YYYY-MM-DD)。

当我运行下面的代码时,它会将它们置于正确的 R 格式中,但它不会保留正确的日期。出于某种原因,它使日期为 2020 年。我的数据框中的所有日期都不是 2020 年

> dates <- nyc_call_data_sample$INCIDENT_DATETIME
> date <- as.Date(dates, 
+                 format = "%m/%d/%y")
> head(nyc_call_data_sample$INCIDENT_DATETIME)
[1] "07/01/2015" "04/24/2016" "04/01/2013" "02/07/2015" "06/27/2016" "05/04/2017"
> head(date)
[1] "2020-07-01" "2020-04-24" "2020-04-01" "2020-02-07" "2020-06-27" "2020-05-04"
> nyc_call_data_sample$INCIDENT_DATETIME <- strptime(as.character(nzd$date), "%d/%m/%y")

另外,我的数据可以追溯到 2013 年。我将如何从数据框中删除 2017 年 1 月 1 日之前的所有行

谢谢!

【问题讨论】:

    标签: r


    【解决方案1】:

    as.Date 和基本的?Extraction 是你的朋友。

    dat <- data.frame(
      unformatted = c("07/01/2015", "04/24/2016", "04/01/2013", "02/07/2015", "06/27/2016", "05/04/2017")
    )
    dat$date <- as.Date(dat$unformatted, format = "%m/%d/%Y")
    dat
    #   unformatted       date
    # 1  07/01/2015 2015-07-01
    # 2  04/24/2016 2016-04-24
    # 3  04/01/2013 2013-04-01
    # 4  02/07/2015 2015-02-07
    # 5  06/27/2016 2016-06-27
    # 6  05/04/2017 2017-05-04
    
    dat[ dat$date > as.Date("2017-01-01"), ]
    #   unformatted       date
    # 6  05/04/2017 2017-05-04
    

    (请随意删除带有dat$unformatted &lt;- NULL 的未格式化列。)

    tidyverse:

    library(dplyr)
    dat %>%
      mutate(date = as.Date(unformatted, format = "%m/%d/%Y")) %>%
      select(-unformatted) %>%
      filter(date > as.Date("2017-01-01"))
    #         date
    # 1 2017-05-04
    

    【讨论】:

      猜你喜欢
      • 2020-03-07
      • 2021-12-18
      • 1970-01-01
      • 1970-01-01
      • 2019-01-20
      • 1970-01-01
      • 2015-04-15
      • 2016-02-19
      • 2021-08-25
      相关资源
      最近更新 更多