gpt4 book ai didi

r - 如何在R中将字符转换为日期格式

转载 作者:行者123 更新时间:2023-12-05 01:45:57 25 4
gpt4 key购买 nike

我有一个 csv 文件,其日期格式如下。

8/13/2016
8/13/2016
8/13/2016
2016-08-13T08:26:04Z
2016-08-13T14:30:23Z
8/13/2016
8/13/2016

当我将其导入 R 时,它会将其视为一个字符。我想把它转换成日期格式,但是当我把它转换成日期格式时,它需要所有的 NA 值

as.Date(df$create_date,format="%m%d%y")

CSV 中的日期字段有不同的格式来记录日期。如何将其转换为 R 中的日期格式

最佳答案

基本 R 选项(假设 OP 的“create_date”列中只有两种格式)将使用 grepl 为那些以“year”开头的日期元素创建逻辑索引,根据逻辑索引 ('i1') 对 'create_date' 进行子集化,分别转换为 Date 类,并将它们分别分配给长度与数据集的行数以创建完整的 Date 类。

i1 <- grepl("^[0-9]{4}", df$create_date)
v1 <- as.Date(df$create_date[i1])
v2 <- as.Date(df$create_date[!i1], "%m/%d/%Y")
v3 <- Sys.Date() + 0:(nrow(df)-1)
v3[i1] <- v1
v3[!i1] <- v2
df$create_date <- v3

或者正如我在 OP 的帖子(第一篇)中评论的那样,可以使用来自 lubridateparse_date_time

library(lubridate)
as.Date(parse_date_time(df$create_date, c('mdy', 'ymd_hms')))
#[1] "2016-08-13" "2016-08-13" "2016-08-13" "2016-08-13"
#[5] "2016-08-13" "2016-08-13" "2016-08-13"

数据

df <- structure(list(create_date = c("8/13/2016", "8/13/2016", 
"8/13/2016",
"2016-08-13T08:26:04Z", "2016-08-13T14:30:23Z", "8/13/2016",
"8/13/2016")), .Names = "create_date", class = "data.frame",
row.names = c(NA, -7L))

关于r - 如何在R中将字符转换为日期格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39060956/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com