R(日付)

2022年3月11日 (金)

[R]同じ値を繰り返してかつ連続したベクトルを作る

同じ値が連続したベクトルを作るにはrep関数を使うが、

> rep(1, 3)
[1] 1 1 1

同じ値が繰り返してかつ連続したベクトルを作るには(たとえば1,1,1,2,2,2,3,3,3,…)、rep関数にeachオプションを付けて使う。

> rep(1:3, 3)
[1] 1 2 3 1 2 3 1 2 3
> rep(1:3, 1, each = 3)
[1] 1 1 1 2 2 2 3 3 3

日付型も使える。

> dt1 <- as.Date("2022-01-01")
> dt2 <- as.Date("2022-01-03")
> rep(seq(dt1, dt2, by = "day"), 3)
[1] "2022-01-01" "2022-01-02" "2022-01-03"
[4] "2022-01-01" "2022-01-02" "2022-01-03"
[7] "2022-01-01" "2022-01-02" "2022-01-03"
> rep(seq(dt1, dt2, by = "day"), 1, each = 3)
[1] "2022-01-01" "2022-01-01" "2022-01-01"
[4] "2022-01-02" "2022-01-02" "2022-01-02"
[7] "2022-01-03" "2022-01-03" "2022-01-03"

2022年2月12日 (土)

[R]日付からその日の曜日を得る

weekdays関数を使う。以下は2021年の4月1~3日の曜日を得る例。

> d <- seq(as.Date("2021-04-01"), length = 3, by = "1 day")
> d
[1] "2021-04-01" "2021-04-02" "2021-04-03"
> weekdays(d)
[1] "木曜日" "金曜日" "土曜日"

特定の1日であれば、以下のようにする。西暦1年1月1日の曜日は月曜日であることがわかる。

> weekdays(as.Date("0001-01-01"))
[1] "月曜日"
無料ブログはココログ