【问题标题】:Remove all rows with dates containing specific hour:minute删除日期包含特定小时:分钟的所有行
【发布时间】:2018-01-31 04:36:22
【问题描述】:

我有一个数据框,其中有一列包含%d/%m/%Y %H:%M 格式的日期,并且想删除所有日期包含时间12:00 的行,无论月、日和年如何。对于名为 df 的数据框和名为 date 的日期列,我尝试运行以下代码,但没有成功:

df <- df %>% filter(!grepl("12:00", date))

有什么办法可以做到这一点吗?

【问题讨论】:

    标签: r dataframe dplyr lubridate grepl


    【解决方案1】:

    为了在下面的示例中更清楚,我将 tstamp 粘贴为字符串,然后对其进行解析。 (这些数据实际上是计分表上的分钟数,但在本例中我们可以忽略它,假装它们是小时和分钟)。

    然后你使用hour(...) == 12按小时提取和过滤,minute(...) == 0按分钟提取和过滤。


    library(dplyr)
    library(lubridate)
    
    lakers %>%   
      select(date, time, opponent, team, player) %>% 
      mutate(tstamp = paste(date, time),
             tstamp.parsed = ymd_hm(tstamp)) %>% 
      filter(hour(tstamp.parsed) == 12, minute(tstamp.parsed) == 0) %>% 
      head
    
    # A tibble: 6 x 7
          date  time opponent  team player         tstamp       tstamp.parsed
         <int> <chr>    <chr> <chr>  <chr>          <chr>              <dttm>
    1 20081028 12:00      POR   OFF        20081028 12:00 2008-10-28 12:00:00
    2 20081029 12:00      LAC   OFF        20081029 12:00 2008-10-29 12:00:00
    3 20081101 12:00      DEN   OFF        20081101 12:00 2008-11-01 12:00:00
    4 20081105 12:00      LAC   OFF        20081105 12:00 2008-11-05 12:00:00
    5 20081109 12:00      HOU   OFF        20081109 12:00 2008-11-09 12:00:00
    6 20081111 12:00      DAL   OFF        20081111 12:00 2008-11-11 12:00:00
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-19
      • 2014-10-04
      • 1970-01-01
      • 2016-10-20
      • 2016-09-05
      相关资源
      最近更新 更多