无法将R中的日期从2002年1月11日转换为2002-01-11

yyhrrdl8  于 2022-12-30  发布在  其他
关注(0)|答案(3)|浏览(112)

我正在尝试更改R中的日期格式。我有一个数据框,其中一列包含给定格式的日期(作为字符串):Jan 11,2002,但我想将格式更改为(也作为字符串):2002-01-11
我试过很多方法,但似乎都不起作用。我最好的方法是尝试将其转换为数据对象,然后再转换回字符串,但格式不同。
下面是我的一段代码:第一个月
我尝试了其他方法,但结果总是NA或字符串,但格式为“旧”。
我认为第一种格式有问题:“%B %d,%Y”,因为当我尝试相同的操作但使用不同的输入时,例如11/01/2002(“%d/%m/%Y”),一切正常。
我刚到R,所以任何帮助都将不胜感激。

k0pti3hp

k0pti3hp1#

有很多软件包可以提供帮助(还有基本R函数,见第一条评论)。下面是我最喜欢的解决方案 *,它确实需要任何输入格式的帮助 *:

> library(anytime)      # for function anydate()
> input <- "Jan 11, 2002"
> d <- anydate(input)
> d
[1] "2002-01-11"
>
dzjeubhm

dzjeubhm2#

这将需要一个可重现的例子,以获得准确的响应。
首先,确认源日期的格式都相同,否则,这可能导致解析错误。
请尝试以下操作:

# Using Lubridate: lubridate::mdy (note, this can be any order depending on your data, e.g. mdy, dmy, ymd, etc. so is flexible
df <- df %>% mutate(strftime = lubridate::mdy(strftime))

请务必查看可重复的示例以获得最佳答案。

xlpyo6sf

xlpyo6sf3#

也许你写错了,看,你写了:

df$date = strftime(as.Date(df$date, format="%b %d, %Y"), "%Y-%m-%d")

应为:

df$date = strftime(as.Date(df$date, format="%m %d, %Y"), "%Y-%m-%d")

format()中有" % b",我认为它应该是" % m"

相关问题