2017-06-21 209 views
0

我在R中有一個數據框,它有兩個變量,它們是日期,我需要計算它們之間的天數差異。但是,它們的格式爲YYYYMMDD。我如何將它更改爲R中可讀的日期格式?在R中將YYYYMMDD轉換爲mm/dd/yyyy格式

+0

'as.Date(df,format =「%m /%d /%Y」)' – Masoud

+1

請使用'dput'向我們提供您的數據樣本。 – G5W

+3

正如@ G5W所說,請閱讀[如何在R中創建一個很好的重現示例](https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) – Masoud

回答

6

這應該工作

lubridate::ymd(given_date_format) 
+0

'lubridate':鎮上最好的 – amonk

1

我喜歡這種隨時隨地包anydate()。快速演示,帶有實際數據:

R> set.seed(123) # be reproducible 
R> data <- data.frame(inp=Sys.Date() + cumsum(runif(10)*10)) 
R> data$ymd <- format(data$inp, "%Y%m%d")  ## as yyyymmdd 
R> data$int <- as.integer(data$ymd)   ## same as integer 
R> library(anytime) 
R> data$diff1 <- c(NA, diff(anydate(data$ymd))) # reads YMD 
R> data$diff2 <- c(NA, diff(anydate(data$int))) # also reads int 
R> data 
      inp  ymd  int diff1 diff2 
1 2017-06-23 20170623 20170623 NA NA 
2 2017-07-01 20170701 20170701  8  8 
3 2017-07-05 20170705 20170705  4  4 
4 2017-07-14 20170714 20170714  9  9 
5 2017-07-24 20170724 20170724 10 10 
6 2017-07-24 20170724 20170724  0  0 
7 2017-07-29 20170729 20170729  5  5 
8 2017-08-07 20170807 20170807  9  9 
9 2017-08-13 20170813 20170813  6  6 
10 2017-08-17 20170817 20170817  4  4 
R> 

這裏第一列是我們工作的實際日期。然後生成第二列和第三列以匹配OP的要求:YMD,無論是字符還是整數。

然後,我們計算它們之間的差異,解釋當我們沒有前身並顯示任一日期格式起作用時的第一個「丟失」數據點差異。

相關問題