将时间戳添加到R中的日期

时间:2017-09-05 21:54:02

标签: r date timestamp posixct

您在数据框中有2列。第1列的日期与2017-01-01相同,第2列的时间戳如下午1:00。

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

2 个答案:

答案 0 :(得分:5)

使用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之间的关系。

答案 1 :(得分:1)

可重复的例子

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