我正在嘗試將以下內容轉換為日期 - 我有數字中的日期,文本中的月份和數字中的年份。
dates = c("26 december, 2014", "23 november, 2018", "1 October, 2007", "31 august, 2013")
編輯:
dates2 = c("13 marzo, 2017", "22 junio, 2018", "24 octubre, 2017", "19 julio, 2018", "14 septiembre, 2017", "3 diciembre, 2015", "23 enero, 2018", "26 septiembre, 2016", "2 agosto, 2017", "3 enero, 2018")
parse_date_time(dates, orders= "dmy")
給出:
[1] NA NA NA NA NA NA NA NA NA NA
Warning message:
All formats failed to parse. No formats found.
uj5u.com熱心網友回復:
更新:西班牙日期:
Sys.setlocale("LC_TIME", "Spanish_Spain.1252")
format <- "%a@%A@%b@%B@%p@"
enc2utf8(unique(format(lubridate:::.date_template, format = format)))
str(lubridate:::.get_locale_regs("Spanish_Spain.1252"))
library(lubridate)
dates2 = c("13 marzo, 2017", "22 junio, 2018", "24 octubre, 2017", "19 julio, 2018", "14 septiembre, 2017", "3 diciembre, 2015", "23 enero, 2018", "26 septiembre, 2016", "2 agosto, 2017", "3 enero, 2018")
parse_date_time(dates2, orders= "dmy")
輸出:西班牙日期:
[1] "2017-03-13 UTC" "2018-06-22 UTC" "2017-10-24 UTC"
[4] "2018-07-19 UTC" "2017-09-14 UTC" "2015-12-03 UTC"
[7] "2018-01-23 UTC" "2016-09-26 UTC" "2017-08-02 UTC"
[10] "2018-01-03 UTC"
第一個答案:
除了 akrun 在評論中的回答之外,lubridate::dmy(dates)
我們還可以使用lubridatesparse_date_time函式。重要的是應用訂單,這里是日月年:
library(lubridate)
parse_date_time(dates, orders= "dmy")
[1] "2014-12-26 UTC" "2018-11-23 UTC" "2007-10-01 UTC"
[4] "2013-08-31 UTC"
uj5u.com熱心網友回復:
而不是擺弄系統語言環境,您可以只使用帶有西班牙語言環境物件的時鐘包。clock_locale()它內置了對許多最常見的語言環境的支持,如果內置支持不夠好,您可以隨時創建自己的自定義語言環境物件。
這也具有跨平臺的好處。您不必擔心 macOS 與 Windows 的語言環境字串不同。
library(clock)
dates <- c(
"13 marzo, 2017", "22 junio, 2018", "24 octubre, 2017",
"19 julio, 2018", "14 septiembre, 2017", "3 diciembre, 2015",
"23 enero, 2018", "26 septiembre, 2016", "2 agosto, 2017", "3 enero, 2018"
)
# Spanish weekday/month labels
clock_labels_lookup("es")
#> <clock_labels>
#> Weekdays: domingo (dom.), lunes (lun.), martes (mar.), miércoles (mié.), jueves
#> (jue.), viernes (vie.), sábado (sáb.)
#> Months: enero (ene.), febrero (feb.), marzo (mar.), abril (abr.), mayo (may.),
#> junio (jun.), julio (jul.), agosto (ago.), septiembre
#> (sept.), octubre (oct.), noviembre (nov.), diciembre (dic.)
#> AM/PM: a. m./p. m.
date_parse(
x = dates,
format = "%d %B, %Y",
locale = clock_locale(labels = "es")
)
#> [1] "2017-03-13" "2018-06-22" "2017-10-24" "2018-07-19" "2017-09-14"
#> [6] "2015-12-03" "2018-01-23" "2016-09-26" "2017-08-02" "2018-01-03"
由reprex 包于 2022-04-21 創建(v2.0.1)
uj5u.com熱心網友回復:
您可以在回圈中使用dict離子,gsub在本例中為西班牙語到英語for,然后將as.Date.
dict <- structure(list(Spanish = c("enero", "febrero", "marzo", "abril",
"mayo", "junio", "julio", "agosto", "septiembre", "octubre",
"noviembre", "diciembre"), English = c("January", "February",
"March", "April", "May", "June", "July", "August", "September",
"October", "November", "December")), class = "data.frame", row.names = c(NA,
-12L))
for (i in seq_len(nrow(dict))) {
dates2 <- with(dict, gsub(Spanish[i], English[i], dates2))
}
as.Date(dates2, '%d %B, %Y')
# [1] "2017-03-13" "2018-06-22" "2017-10-24" "2018-07-19" "2017-09-14" "2015-12-03"
# [7] "2018-01-23" "2016-09-26" "2017-08-02" "2018-01-03"
資料:
dates2 <- c("13 marzo, 2017", "22 junio, 2018", "24 octubre, 2017", "19 julio, 2018",
"14 septiembre, 2017", "3 diciembre, 2015", "23 enero, 2018",
"26 septiembre, 2016", "2 agosto, 2017", "3 enero, 2018")
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/460974.html
上一篇:一幀中有多個小提琴情節可能嗎?
