你可以在R中使用as.Date() 函数来快速转换字符对象为日期对象。
这个函数使用以下基本语法;
as.Date(x, format, tryFormats = c("%Y-%m-%d", "%Y/%m/%d")
where:
- x:要转换为日期的对象的名称。
- 格式:日期字符串的格式。如果没有指定,它将尝试其中的一个 tryFormats。
- tryFormats :要尝试的格式。
下面的例子展示了如何在不同情况下使用这个函数。
例1:使用as.Date()与可识别的日期格式
默认情况下,如果字符对象的格式是以下方式之一,**as.Date()**函数可以轻松地将字符对象转换为日期对象:
- %Y-%m-%d
- %Y/%m/%d
下面的代码显示了如何使用as.Date()函数将一个格式为%Y-%m-%d的字符对象转换为一个日期对象:
#define character object in %Y-%m-%d format
x <- "2022-10-15"
#view class of x
class(x)
[1] "character"
#convert character object to date object
my_date <- as.Date(x)
#view new date object
my_date
[1] "2022-10-15"
#view class of my_date
class(my_date)
[1] "Date"
我们可以看到,这个字符对象已经被转换为一个日期对象。
下面的代码显示了如何使用as.Date()函数将一个格式为%Y/%m/%d的字符对象转换为一个日期对象:
#define character object in %Y/%m/%d format
x <- "2022/10/15"
#convert character object to date object
my_date <- as.Date(x)
#view class of my_date
class(my_date)
[1] "Date"
我们可以看到,这个字符对象已经被转换为一个日期对象。
对于这两个例子,我们都不需要在as.Date()函数中使用格式参数,因为这两种日期格式都被R识别。
例2:对无法识别的日期格式使用as.Date()
当字符对象具有不可识别的日期格式时,你必须使用format参数来指定格式。
例如,下面的代码显示了如何使用as.Date()函数将一个具有%m/%d/%Y格式的字符对象转换为一个日期对象:
#define character object in %m/%d/%Y format
x <- "10/15/2022"
#convert character object to date object
my_date <- as.Date(x, format="%m/%d/%Y")
#view new date object
my_date
[1] "2022-10-15"
#view class of my_date
class(my_date)
[1] "Date"
我们可以看到,这个字符对象已经被转换为一个日期对象。
而下面的代码显示了如何使用as.Date()函数将一个格式为%m%d%Y的字符对象转换为日期对象:
#define character object in %m%d%Y format
x <- "10152022"
#convert character object to date object
my_date <- as.Date(x, format="%m%d%Y")
#view new date object
my_date
[1] "2022-10-15"
#view class of my_date
class(my_date)
[1] "Date"
字符对象已经成功转换为日期对象。
其他资源
下面的教程解释了如何在R中执行其他常见的操作:
如何在R中把UNIX时间戳转换为日期
如何在R中把因子转换为日期
如何在R中按日期对数据框进行排序
如何在R中从日期中提取年份