【发布时间】:2021-12-30 12:35:53
【问题描述】:
我有一个大型数据库,其中一列包含以下格式的日期:DD-MM-YYYY。 我想将日期格式反转为:YYYY-MM-DD。 有人可以告诉我如何使用 bash OR R 来做到这一点吗?
【问题讨论】:
-
请考虑支持或接受您的问题的答案。 stackoverflow.com/help/someone-answers
我有一个大型数据库,其中一列包含以下格式的日期:DD-MM-YYYY。 我想将日期格式反转为:YYYY-MM-DD。 有人可以告诉我如何使用 bash OR R 来做到这一点吗?
【问题讨论】:
一个可能的解决方案:
library(tidyverse)
library(lubridate)
df <- data.frame(date=c("11-4-2021","5-6-2019"))
df %>%
mutate(date2 = dmy(date) %>% ymd)
#> date date2
#> 1 11-4-2021 2021-04-11
#> 2 5-6-2019 2019-06-05
【讨论】:
在 bash 中,我们可以使用字符串操作:
dmy=30-12-2021
echo "${dmy:6:4}-${dmy:3:2}-${dmy:0:2}" # 2021-12-30
或read:
IFS="-" read -r d m y <<<"$dmy"
echo "$y-$m-$d"
【讨论】:
我用 R 来解决我的问题:
df > data.frame 列“eventDate”上的日期。日期格式为 DD-MM-YYYY。有几个单元格的日期不完整(例如 MM-YYYY 或 YYYY)。
library(tidyr)
x <- separate(df, col = eventDate, into = c("day", "month", "year"), sep="-")
y <- x %>% unite("eventDate_2", year:month:day, remove=TRUE, sep="-", na.rm= TRUE)
y <- cbind(y, df$eventDate) # add the original column for comparing if it had worked and correct individual errors.
【讨论】:
echo "${dmy:6:4}-${dmy:3:2}-${dmy:0:2}"
【讨论】: