2

Rでは、次のように日付のデータクラスを取得しました。

20100701
20100702
20100703
20100704

どうすればそれらを次の形式に変換できますか?

2010 07 01
2010 07 02
2010 07 03

3列の年、月、日のデータ。

4

3 に答える 3

3

パッケージを使用する場合、これは非常に簡単ですlubridate

library(lubridate)
x <- ymd(dates)
data.frame(y=year(x), m=month(x), d=day(x))
     y m d
1 2010 7 1
2 2010 7 2
3 2010 7 3
4 2010 7 4

lubridate日付を操作するための便利な関数のスタックを提供します。この例では:

  • ymd()フォーマットを推測して、文字列を日付に変換します。
  • year()年を抽出する
  • month()月を抽出します
  • day()日を抽出します
于 2012-07-10T05:47:47.623 に答える
2

lubridate言及するだけで、これは関数を使用して、strptimeおよびpackageformat.POSIXctからも実行できます (ただし、 package よりも便利ではないかもしれません) base:

x <- c(20100701,20100702,20100703,20100704)
strptime(x, format="%Y%m%d") -> y
data.frame(year=format(y,format="%Y"),month=format(y,format="%m"),day=format(y,format="%d"))
  year month day
1 2010    07  01
2 2010    07  02
3 2010    07  03
4 2010    07  04
于 2012-07-10T06:38:17.183 に答える
1

いくつかのダミーデータ:

dates <- c("20100701", "20100701", "20100701", "20100701")

日付を取得するには:

library(lubridate)
ymd(dates)
Using date format %Y%m%d.
[1] "2010-07-01 UTC" "2010-07-01 UTC" "2010-07-01 UTC" "2010-07-01 UTC"

データフレームを取得し、文字列を分割するには:

library(stringr)
data.frame(year=str_sub(dates, 1, 4), month=str_sub(dates, 5, 6), day=str_sub(dates, 7, 8))
  year month day
1 2010    07  01
2 2010    07  01
3 2010    07  01
4 2010    07  01
于 2012-07-10T05:12:58.200 に答える