R语言 把数据框架列转换为日期时间
字符串类型的日期对象并不提供简单的解析和操作组件。将日期对象转换为POSIXct或POSIXlt对象可以帮助轻松地将日期转换为所需的格式和理想的时区。在这篇文章中,我们将讨论如何在R编程语言中把数据框架列转换为字符串。
方法1:使用as.POSIXct()方法
一个日期字符串可以首先被转换为POSIXct对象,然后可以很容易地对其进行基本算术。POSIXct对象简化了数学运算的过程,因为它们依赖于秒作为时间管理的主要单位。日期被转换为标准的时区,即UTC。一个字符串类型的日期对象可以转换为POSIXct对象,在R中使用它们作为.POSIXct(date)方法。
1小时=1 * 60 * 60秒
1分钟=1*60秒
POSIXct中的 “ct “表示日历时间,它存储了从起点开始的秒数。它的输入是字符串日期对象和格式指定器。POSIXct以秒为单位存储日期和时间,秒数从1970年1月1日开始。
as.POSIXct( date, format)
代码
# declaring a data frame
data_frame = data.frame(col1 = letters[1:4],
col2 = c(5:8) ,
col3 = c("2021-05-05 01:04:34",
"2021-03-06 03:14:44",
"2021-03-11 07:22:48",
"2021-02-02 11:54:56"))
print ("Original dataframe")
print (data_frame)
sapply(data_frame, class)
# converting to datetime object
data_frame[['col3']] <- as.POSIXct(data_frame[['col3']],
format = "%Y-%m-%d %H:%M:%S")
print ("Modified dataframe")
print (data_frame)
sapply(data_frame, class)
输出
[1] "Original dataframe"
col1 col2 col3
1 a 5 2021-05-05 01:04:34
2 b 6 2021-03-06 03:14:44
3 c 7 2021-03-11 07:22:48
4 d 8 2021-02-02 11:54:56
col1 col2 col3
"factor" "integer" "factor"
[1] "Modified dataframe"
col1 col2 col3
1 a 5 2021-05-05 01:04:34
2 b 6 2021-03-06 03:14:44
3 c 7 2021-03-11 07:22:48
4 d 8 2021-02-02 11:54:56
col1
[1] "factor"col2
[1] "integer"
$col3
[1] "POSIXct" "POSIXt"
方法2:使用 strptime() 方法
R中的strptime方法用于直接将字符向量(各种格式)转换成POSIXlt格式。strptime比之前的方法更快,因为strptime只处理字符输入。
语法: strptime(date, format, tz = “”)
参数
- date – 字符格式的日期
- format – 输入日期的格式指定符
- tz – 时区(可选)
代码
# declaring a data frame
data_frame = data.frame(col1 = letters[1:4],
col2 = c(5:8) ,
col3 = c("2021-05-05 01:04:34",
"2021-03-06 03:14:44",
"2021-03-11 07:22:48",
"2021-02-02 11:54:56"))
print ("Original dataframe")
print (data_frame)
sapply(data_frame, class)
# converting to datetime object
data_frame[['col3']] <- strptime(data_frame[['col3']],
format = "%Y-%m-%d %H:%M:%S")
print ("Modified dataframe")
print (data_frame)
sapply(data_frame, class)
输出
[1] "Original dataframe"
col1 col2 col3
1 a 5 2021-05-05 01:04:34
2 b 6 2021-03-06 03:14:44
3 c 7 2021-03-11 07:22:48
4 d 8 2021-02-02 11:54:56
col1 col2 col3
"factor" "integer" "factor"
[1] "Modified dataframe"
col1 col2 col3
1 a 5 2021-05-05 01:04:34
2 b 6 2021-03-06 03:14:44
3 c 7 2021-03-11 07:22:48
4 d 8 2021-02-02 11:54:56
col1
[1] "factor"col2
[1] "integer"
$col3
[1] "POSIXlt" "POSIXt"
格式指定器表明解析字符日期对象的方式。它将数据时间对象转换为YYYY-MM-DD HH:MM:SS对象。
# declaring a data frame
data_frame = data.frame(col1 = letters[1:4],
col2 = c(5:8) ,
col3 = c("15/12/2021 01:04:34",
"06/10/2021 03:14:44",
"11/04/2021 07:22:48",
"28/01/1994 11:54:56"))
print ("Original dataframe")
print (data_frame)
sapply(data_frame, class)
# converting to datetime object
data_frame[['col3']] <- strptime(data_frame[['col3']],
format = "%d/%m/%Y %H:%M:%S")
print ("Modified dataframe")
print (data_frame)
sapply(data_frame, class)
输出
[1] "Original dataframe"
col1 col2 col3
1 a 5 15/12/2021 01:04:34
2 b 6 06/10/2021 03:14:44
3 c 7 11/04/2021 07:22:48
4 d 8 28/01/1994 11:54:56
col1 col2 col3
"factor" "integer" "factor"
[1] "Modified dataframe"
col1 col2 col3
1 a 5 2021-12-15 01:04:34
2 b 6 2021-10-06 03:14:44
3 c 7 2021-04-11 07:22:48
4 d 8 1994-01-28 11:54:56
col1
[1] "factor"col2
[1] "integer"
$col3
[1] "POSIXlt" "POSIXt"