這個問題在這里已經有了答案: 如何更改同一列中的多個日期格式? (3 個回答) 將列中的多種日期格式轉換為單一形式 2 個回答 1 小時前關閉。
我有站明智的放電資料框df。日期(我從現有.csv檔案匯入)格式不規則。下面是一個示例資料框:
> df
Station Date Discharge
1 A 1981-01-01 0.1
2 A 1981-02-01 0.0
3 B 1981-03-01 0.0
4 B 1981-04-01 0.0
5 B 1/13/1981 0.4
6 C 1/14/1981 0.2
7 D 1/15/1981 0.6
8 D 1981-16-01 0.1
9 D 1981-17-01 0.5
由于這種資料的進一步處理是困難的。我嘗試了以下方法:
> df$Date <- as.Date(df$Date, "%m/%d/%Y")
> df
Station Date Discharge
1 A 1981-01-01 0.1
2 A 1981-02-01 0.0
3 B 1981-03-01 0.0
4 B 1981-04-01 0.0
5 B NA 0.4
6 C NA 0.2
7 D NA 0.6
8 D 1981-16-01 0.1
9 D 1981-17-01 0.5
正在引入 NA。如何使所有日期的格式相同。將日期作為d-m-y格式會很好。任何指導表示贊賞。謝謝。
uj5u.com熱心網友回復:
您可以先使用lubridate::parse_date_time以標準格式獲取資料。可以在函式中傳遞多種格式。
lubridate::parse_date_time(df$Date, c('Ydm', 'mdY'))
#[1] "1981-01-01 UTC" "1981-01-02 UTC" "1981-01-03 UTC" "1981-01-04 UTC" "1981-01-13 UTC"
#[6] "1981-01-14 UTC" "1981-01-15 UTC" "1981-01-16 UTC" "1981-01-17 UTC"
然后使用format您想要的任何格式獲取資料。
format(lubridate::parse_date_time(df$Date, c('Ydm', 'mdY')), '%d-%m-%Y')
#[1] "01-01-1981" "02-01-1981" "03-01-1981" "04-01-1981" "13-01-1981" "14-01-1981"
#[7] "15-01-1981" "16-01-1981" "17-01-1981"
請注意,輸出format是類字符而不是日期。日期在 R 中只能有一種格式,即Ymd.
as.Date(lubridate::parse_date_time(df$Date, c('Ydm', 'mdY')))
#[1] "1981-01-01" "1981-01-02" "1981-01-03" "1981-01-04" "1981-01-13" "1981-01-14"
#[7] "1981-01-15" "1981-01-16" "1981-01-17"
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/312985.html
上一篇:如何檢查一個特定的字串是否作為一個物件中的一個值出現?
下一篇:使用pandasloc時的索引
