12

data.frame 内に DateTime ベクトルがあります。このデータ フレームは、年間を通して 1 時間間隔を表す 8760 個の観測値で構成されています。

2010-01-01 00:00
2010-01-01 01:00
2010-01-01 02:00
2010-01-01 03:00

等々。

最初の列として元の DateTime ベクトルを持ち、次に 2 番目の列に 1 時間ごとの値を持つ data.frame を作成したいと思います。

2010-01-01 00:00          00:00
2010-01-01 01:00          01:00

これはどのように達成できますか?

4

4 に答える 4

13

formatまたはを使用strptimeして、時間情報を抽出します。

POSIXctベクトルを作成します。

x <- seq(as.POSIXct("2012-05-21"), by=("+1 hour"), length.out=5)

時間を抽出します。

data.frame(
  date=x,
  time=format(x, "%H:%M")
)

                 date  time
1 2012-05-21 00:00:00 00:00
2 2012-05-21 01:00:00 01:00
3 2012-05-21 02:00:00 02:00
4 2012-05-21 03:00:00 03:00
5 2012-05-21 04:00:00 04:00

入力ベクトルが文字ベクトルの場合は、最初にPOSIXctに変換する必要があります。

いくつかのデータを作成する

dat <- data.frame(
  DateTime=format(seq(as.POSIXct("2012-05-21"), by=("+1 hour"), length.out=5), format="%Y-%m-%d %H:%M")
)
dat
          DateTime
1 2012-05-21 00:00
2 2012-05-21 01:00
3 2012-05-21 02:00
4 2012-05-21 03:00
5 2012-05-21 04:00

スプリットタイムアウト:

data.frame(
  DateTime=dat$DateTime,
  time=format(as.POSIXct(dat$DateTime, format="%Y-%m-%d %H:%M"), format="%H:%M")
)

          DateTime  time
1 2012-05-21 00:00 00:00
2 2012-05-21 01:00 01:00
3 2012-05-21 02:00 02:00
4 2012-05-21 03:00 03:00
5 2012-05-21 04:00 04:00
于 2012-05-21T10:20:51.117 に答える
3

使用するlubridate

library(stringr)
library(lubridate)
library(plyr)

df <- data.frame(DateTime = c("2010-01-01 00:00", "2010-01-01 01:00", "2010-01-01 02:00", "2010-01-01 03:00"))

df <- mutate(df, DateTime = ymd_hm(DateTime),
                 time  = str_c(hour(DateTime), str_pad(minute(DateTime), 2, side = 'right', pad = '0'), sep = ':'))
于 2012-05-23T02:42:00.313 に答える
3

または、一般的に、それらを日付として扱わずに、時刻と日付が正しくパディングされていれば、次を使用できます。

library(stringr)
df <- data.frame(DateTime = c("2010-01-01 00:00", "2010-01-01 01:00", "2010-01-01 02:00", "2010-01-01 03:00"))
df <- data.frame(df, Time = str_sub(df$DateTime, -5, -1))

それは本当にあなたのニーズに依存します。

于 2012-05-21T10:24:41.053 に答える
0

より一般的な注意として、Google からここに来て、時間ごとにグループ化したい人のために:

ここでの鍵は次のとおりです。lubridate::hour(datetime)

ここのクランドキュメントのp22:https://cran.r-project.org/web/packages/lubridate/lubridate.pdf

于 2017-12-07T15:54:53.483 に答える