我在以下列格式給出的資料框中有一個日歷日期串列:
20000110
20000117
20000124
2000-01-10、2000-01-17、2000-01-24 等的標準是什么?
但是,使用
df %>% mutate(date= as.Date(df$data, format = "%Y%m%d") )
不起作用。它彈出一個錯誤,要求我提供一個origin,這是一個可選輸入as.Date()。如果我隨后提供我串列中的第一個日期作為原點,它會給我完全錯誤的日期:
df %>% mutate(date= as.Date(df$data, format = "%Y%m%d", origin="20000110") )
uj5u.com熱心網友回復:
您的日期屬于 class "numeric",因此as.Date.numeric發送了origin=第二個引數。因此,您所要做的就是強制as.characterdispatch as.Date.character,它具有所需的format=引數。
transform(df, date=as.Date(as.character(date), '%Y%m%d'))
# date
# 1 2000-01-10
# 2 2000-01-17
# 3 2000-01-24
通常origin=是 1970 年 1 月 1 日,即所謂的 Unix 紀元,數字"date"是從那時起的天數(以"POSIXt"秒為單位)。
as.Date(as.numeric(Sys.Date()))
# Error in as.Date.numeric(as.numeric(Sys.Date())) :
# 'origin' must be supplied
as.Date(as.numeric(Sys.Date()), origin='1970-01-01')
# [1] "2022-05-12"
顯然,這對您的數字沒有意義。
資料:
df <- structure(list(date = c(20000110, 20000117, 20000124)), class = "data.frame", row.names = c(NA,
-3L))
uj5u.com熱心網友回復:
我找到了答案。訣竅是使用lubridate庫的ymd()功能:
df %>% mutate(date= lubridate::ymd(df$data) )
這完美!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/475146.html
