不带前导零的日期格式-R

时间:2019-05-14 22:11:50

标签: r date data-manipulation

我在字符向量中有日期,我正在寻找一种使用as.Date()将其转换为日期格式的方法:

vector <- c("15/1/2019", "5/5/2019")

但是,as.Date(vector, format="%d/%m/%Y")接收到以零开头的输入字符。我已经找到了许多解决方案:

Input: "15/01/2019"
Output: "15/1/2019"

但是,要使as.Date()工作,我需要采取相反的操作:

Input: "15/1/2019" "5/5/2019"
Output: "15/01/2019" "05/05/2019"

format参数是否有特定格式?还是我必须使用substr()解决方案?

2 个答案:

答案 0 :(得分:3)

我们可以使用strftime

strftime(as.Date(inp, format="%d/%m/%Y"), format="%d/%m/%Y")
# [1] "15/01/2019" "05/05/2019"

数据

inp <- c("15/1/2019", "5/5/2019")

答案 1 :(得分:1)

我不确定我是否理解这个问题。 as.Date()在您的输入中按预期工作:

vector <- c("15/1/2019", "5/5/2019")
dates <- as.Date(vector, format = "%d/%m/%Y")

dates
[1] "2019-01-15" "2019-05-05"

要获得所需的输出,请使用format

format(dates, "%d/%m/%Y")
[1] "15/01/2019" "05/05/2019"

编辑

从您的评论中可以很明显地看出,您正在混淆两件事。

要使用as.Date()获取Date对象,您需要告诉它输入日期字符串的格式。您有“日-月-年”。因此,您可以将其提供给as.Date()

as.Date(vector, format = "%d/%m/%Y")

结果将始终以年-月-日(YYYY-MM-DD)的形式显示在控制台中。

以所选格式显示日期有所不同。现在我们将Date对象格式化为字符串:

format(dates, "%d/%m/%Y")

总结:正确转换的Date对象将始终在控制台中显示为YYYY-MM-DD。将对象格式化为字符串是另一种操作。

我希望这可以解决所有问题。