首页 > 解决方案 > 如何在特定日期 R Studio 之前更改日期格式并从数据框中删除行

问题描述

我有一个包含超过 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

解决方案


as.Date和基本?Extract离子是你的朋友。

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 <- 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

推荐阅读