簡體   English   中英

如何在R中將字符轉換為日期格式

[英]How to convert character into date format in R

我有一個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'列中只有兩種格式),將為那些以'year'開頭的日期元素創建一個帶有grepl的邏輯索引,基於邏輯將'create_date'子集化index('i1'),單獨轉換為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的帖子(第一篇)中parse_date_timelubridate可以使用來自lubridate

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))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM