【问题标题】:mutate date to create a column for all time less than a timestamp改变日期以创建小于时间戳的所有时间的列
【发布时间】:2020-05-28 15:39:36
【问题描述】:

我有一些看起来像这样的数据:

# A tibble: 754 x 2
   time                 v1
   <dttm>              <dbl>
 1 2020-04-16 09:45:00  175.
 2 2020-04-16 10:00:00  174.
 3 2020-04-16 10:15:00  174.
 4 2020-04-16 10:30:00  173.
 5 2020-04-16 10:45:00  174.

我想从lubridate 包中group_by 一个变量day 并应用ifelse 语句。

df %>% 
  mutate(
    day = day(time)
    ) %>% 
  group_by(day) %>% 
  mutate(
    lessThanTenThirty = ifelse(time < "10:30", 1, 0)
  )

因此,当数据小于 10:30 时,所有time(所有天)的预期输出为1,之后所有time 的输出为0

数据:

    df <- structure(list(time = structure(c(1587030300, 1587031200, 1587032100, 
1587033000, 1587033900, 1587116700, 1587117600, 1587118500, 1587119400, 
1587120300), tzone = "UTC", class = c("POSIXct", "POSIXt")), 
    v1 = c(174.52, 174.25, 173.69, 173.07, 174.015, 179.578, 
    178.41, 178.42, 178.98, 178.6)), row.names = c(NA, -10L), class = c("tbl_df", 
"tbl", "data.frame"))

【问题讨论】:

    标签: r datetime dplyr lubridate


    【解决方案1】:

    您不必对数据进行分组。只需使用format 重新格式化您的时间:

    df %>% 
      mutate(lessThanTenThirty = if_else(format(time, '%H:%M') < "10:30", 1, 0))
    
    # A tibble: 754 x 3
       time                   v1 lessThanTenThirty
       <dttm>              <dbl>             <dbl>
     1 2020-04-16 09:45:00  175.                 1
     2 2020-04-16 10:00:00  174.                 1
     3 2020-04-16 10:15:00  174.                 1
     4 2020-04-16 10:30:00  173.                 0
     5 2020-04-16 10:45:00  174.                 0
     6 2020-04-16 11:00:00  175.                 0
     7 2020-04-16 11:15:00  175.                 0
     8 2020-04-16 11:30:00  175.                 0
     9 2020-04-16 11:45:00  176.                 0
    10 2020-04-16 12:00:00  176.                 0
    

    【讨论】:

      【解决方案2】:

      as.ITime 的选项

      library(data.table)
      library(dplyr)
      df %>% 
         mutate(lessThanTenThirty = +(as.ITime(time) < as.ITime("10:30:00")))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-12-22
        • 2015-08-02
        • 1970-01-01
        • 2018-09-16
        • 2021-03-11
        • 2018-10-25
        • 2014-11-26
        相关资源
        最近更新 更多