2017-06-21 9 views
0

データフレームはRであり、日付は2つの変数があり、それらの間の日数の差を計算する必要があります。ただし、YYYYMMDDとして書式設定されています。それをRで読める日付形式に変更するにはどうすればよいですか?YYYYMMDDをmm/dd/yyyy形式に変換するR

+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

これは、私はいつでもパッケージからanydate()好き

lubridate::ymd(given_date_format) 
+0

'lubridate':町で最高 – amonk

1

動作するはずです。実際のデータを使用したクイックデモ:

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の要件に合うように列2と3が生成されます。文字または整数のYMD。

先行者がなく、どちらの日付書式でも表示された場合の最初の「失われた」データポイントの差異を考慮して、差異を計算します。

関連する問題