【问题标题】:Adding Time Stamp to a date in R [duplicate]将时间戳添加到R中的日期[重复]
【发布时间】:2018-02-14 06:36:21
【问题描述】:

嗨,数据框中有 2 列。第 1 列的日期为 2017-01-01,第 2 列的时间戳为下午 1:00。

我需要创建另一个列来结合这两个信息并给我 2017-01-01 13:00:00

【问题讨论】:

标签: r date timestamp posixct


【解决方案1】:

使用as.POSIXct 将字符格式转换为日期格式。

df$date.time <- as.POSIXct(paste(df$date, df$time), format = "%Y-%m-%d %I:%M %p")

编辑:

为了提供更多上下文...您将日期和时间列粘贴在一起以获取字符串2017-001-01 1:00 PM

然后,您使用format = 将字符串的格式作为POSIXct 参数输入。您可以看到符号之间的关系及其含义here

【讨论】:

    【解决方案2】:

    可重现的例子

    library(lubridate)
    A <- data.frame(X1 = ymd("2017-01-01"),
                    X2 = "1:00 PM", stringsAsFactors=F)
    
    #         X1      X2
    # 1 2017-01-01 1:00 PM
    

    解决方案

    library(dplyr)
    library(lubridate)
    temp <- A %>% 
              mutate(X3 = ymd_hm(paste(X1, X2)))
    

    输出

              X1      X2                  X3
          <date>   <chr>              <dttm>
    1 2017-01-01 1:00 PM 2017-01-01 13:00:00
    

    多行输入

    B <- data.frame(X1 = ymd("2017-01-01", "2016-01-01"),
                    X2 = c("1:00 PM", "2:00 AM"), stringsAsFactors=F)
    
    temp <- B %>% 
              mutate(X3 = ymd_hm(paste(X1, X2)))
    
    
    #           X1      X2                  X3
    #       <date>   <chr>              <dttm>
    # 1 2017-01-01 1:00 PM 2017-01-01 13:00:00
    # 2 2016-01-01 2:00 AM 2016-01-01 02:00:00
    

    【讨论】:

    • 您不需要rowwise。您刚刚混淆了 paste 参数。例如,试试B %&gt;% mutate(X3=ymd_hm(paste(X1, X2)))
    • 谢谢,我的粘贴参数很乱!我在您的帮助下进行了编辑。
    猜你喜欢
    • 2011-09-02
    • 2012-05-06
    • 2021-12-03
    • 2023-03-31
    • 2011-09-07
    • 1970-01-01
    • 2020-01-31
    相关资源
    最近更新 更多