簡體   English   中英

在 R 中查找四位數字並將其轉換為日歷日期

[英]Find four digit numbers and convert them to calendary date in R

我有一個 dataframe 列,其中包含混合日期格式,例如 30/06/2020、07/2020 和 2020。我想將四位數字轉換為日期(例如 2020 -> XX/XX/2020) . 我有不同的年份,而不僅僅是 2020 年,所以如果可能的話,我更喜歡通用的表達方式。

一個補充問題:當我從 excel 文件中讀取數據時,我得到的是五位數字而不是日期。 根據我的閱讀,這些數字是自 1900 年以來經過的天數。因此,實際列還包含五位數字、代表年份的四位數字和其他日期。 我已經處理了這個問題,但不是以最佳方式。 有沒有一種通用的方法來處理所有這些格式? 對不起,大帖子

ķ

謝謝大家的想法。 你是對的,我下次需要更具體。 老實說,我專注於解決問題,我相信我做到了。

關於數據,一個簡單的說明可能如下:

date
08/2003
12/06/2002
38054
2004
...
...
...

首先,我發現 dataframe 列(RHO_DataBase$date)的哪些元素表示為年份(例如 2003)並將它們轉換為日期(例如 15/05/2003):

#Step 1
counter1 <- which( (!is.na(as.numeric(RHO_DataBase$date))) & (as.numeric(RHO_DataBase$date)<2030)  )
for (i in counter1) {
  RHO_DataBase$date[i] <- paste ("15/05/",sep="",RHO_DataBase$date[i])
}

然后,我找到了哪些元素以數值表示(自 1899 年 12 月 30 日以來的天數),並將它們的格式轉換為日/月/年

#Step 2
counter2 <- which(!is.na(as.numeric(RHO_DataBase$date)))
for (i in counter2) {
  RHO_DataBase$date[i] <- format(as.Date(as.numeric(RHO_DataBase$date[i]), origin = "1899-12-30"),'%d/%m/%Y')
}

然后,我找到了以其他剩余格式表示的列元素,在這種情況下只有月/年,並使用粘貼將其更改為日/月/年。

# Step 3:
counter3<-which(is.na(as.Date( RHO_DataBase$date, "%d/%m/%Y") ) )
for (i in counter3) {
  RHO_DataBase$date[i] <- paste ("01/",sep="",RHO_DataBase$date[i])
} 

干杯,K

暫無
暫無

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

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