【问题标题】:How to remove all rows in a data frame before a certain timestamp?如何在某个时间戳之前删除数据框中的所有行?
【发布时间】:2021-08-25 19:42:41
【问题描述】:

我有一个数据框,第一列是“日期”,格式为YYYY-MM-DD HH:MM:SS

我希望能够删除数据框中特定日期和时间之前的所有行吗?

例如,如果下面我想删除 2021-07-19 11:30:30 之前的所有行。我该怎么办?

我要归档的时间也作为变量“startdatetime”保存到环境中

date
2021-07-19 11:30:00
2021-07-19 11:30:15
2021-07-19 11:30:30
2021-07-19 11:30:45
2021-07-19 11:31:00

【问题讨论】:

    标签: r dataframe dplyr timestamp


    【解决方案1】:

    你可以使用

    library(dplyr)
    
    df %>% 
    #  filter(date >= as.POSIXct("2021-07-19 11:30:30"))
      filter(date >= "2021-07-19 11:30:30") # thanks to ThomasIsCoding: as.POSIXct isn't necessary
    

    返回

                     date
    1 2021-07-19 11:30:30
    2 2021-07-19 11:30:45
    3 2021-07-19 11:31:00
    

    【讨论】:

    • 我认为即使没有as.POSIXct 也应该可以工作 :)
    • 你是对的!不知道as.POSICxt 是没有必要的。
    • 这似乎不起作用,我的环境中的数据框仍然包含所有行。
    • @James (1) 您能否以dput(head(YourData)) 的形式提供您的数据?编辑您的问题并将数据放入其中。 (2) 除非您将显示的代码分配给数据框,否则您的环境中的 data.frame 不会被修改。会不会是这个原因?
    【解决方案2】:

    我会使用包lubridatedplyrlubridate 旨在进行日期和时间的操作。

    复制你的例子:

    library(lubridate)
    library(dplyr)
    
    dates <- c("2021-07-19 11:30:00","2021-07-19 11:30:15","2021-07-19 11:30:30",
               "2021-07-19 11:30:45","2021-07-19 11:31:00")
    
    #coerce string to Date and Time
    dates <- ymd_hms(dates) #which means year, month, day, hour, minute and second
    
    df <- data.frame(date = dates)
    
    df %>% filter(date >= ymd_hms("2021-07-19 11:30:30"))
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-07
      • 2017-09-19
      • 2021-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多