我在R数据框中有一列日期,看起来像这样,
Date
2020-08-05
2020-08-05
2020-08-05
2020-08-07
2020-08-08
2020-08-08
因此日期格式为“ yyyy-mm-dd”。
我正在将此数据帧写入需要以非常特定的方式格式化的CSV。我需要将这些日期转换为格式“ mm / dd / yyyy hh:mm:ss”,所以这就是我希望这些列看起来像的样子:
Date
8/5/2020 12:00:00 AM
8/5/2020 12:00:00 AM
8/5/2020 12:00:00 AM
8/7/2020 12:00:00 AM
8/8/2020 12:00:00 AM
8/8/2020 12:00:00 AM
日期没有开头的时间戳,因此所有日期都需要采用上述格式的午夜时间戳。
昨天我花了很多时间试图强制这种格式,但无法。我可以很容易地使用as.Date()将2020-08-05更改为8/5/2020,但是当我尝试添加午夜时间戳时就会出现问题。
如何为这些重新格式化的日期添加午夜时间戳记?
非常感谢您的帮助!
答案 0 :(得分:2)
您可以使用format
:
df <- data.frame(Date = as.Date(c("2020-08-05", "2020-08-07")))
format(df$Date, "%d-%m-%Y 12:00:00 AM")
[1] "05-08-2020 12:00:00 AM" "07-08-2020 12:00:00 AM"
答案 1 :(得分:0)
dat <- data.frame(
Date = as.Date("2020-08-05") + c(0, 0, 0, 2, 3, 3)
)
dat[["Date"]] <- format(dat[["Date"]], "%m/%d/%Y %I:%M:%S %p")
dat[["Date"]] <- sub("([ap]m)$", "\\U\\1", dat[["Date"]], perl = T)
dat
## Date
## 1 08/05/2020 12:00:00 AM
## 2 08/05/2020 12:00:00 AM
## 3 08/05/2020 12:00:00 AM
## 4 08/07/2020 12:00:00 AM
## 5 08/08/2020 12:00:00 AM
## 6 08/08/2020 12:00:00 AM