の列の累積最大日付を見つけようとしていますdata.frame
。私のデータは次のようになります。
df <- data.frame(id = c(1, 2, 3, 4, 5, 7, 8, 11, 3, 12),
date = sample(seq(as.Date("2015-01-01"), as.Date("2017-01-01"), by = "day"), 10))
# > df
id date
1 15 2015-11-22
2 2 2016-06-23
3 4 2015-03-21
4 6 2015-04-09
5 5 2015-05-20
6 1 2016-01-03
7 13 2015-01-01
8 14 2016-11-24
9 7 2016-12-23
10 9 2016-08-12
私は次のようなもので終わることを期待しています:
# > df
id date
1 15 2015-11-22
2 2 2016-06-23
3 4 2016-06-23
4 6 2016-06-23
5 5 2016-06-23
6 1 2016-06-23
7 13 2016-06-23
8 14 2016-11-24
9 7 2016-12-23
10 9 2016-12-23
で数値変数の累積最大値を見つけることに成功しましたdplyr::cummax()
が、この関数はDate
オブジェクトには適用できません。おそらくベースRに、cumsum()
日付に類似していて使用できる別の関数がありますか?
クラスDate
の起源が1970-01-01
:であることに注意して、数値に変換してから元に戻すことができます。
set.seed(1)
df <- data.frame(id = c(1, 2, 3, 4, 5, 7, 8, 11, 3, 12),
date = sample(seq(as.Date("2015-01-01"), as.Date("2017-01-01"), by = "day"), 10))
df$cum_max_date <- as.Date(cummax(as.integer(df$date)), "1970-01-01")
df
#> id date cum_max_date
#> 1 1 2015-07-14 2015-07-14
#> 2 2 2015-09-30 2015-09-30
#> 3 3 2016-02-23 2016-02-23
#> 4 4 2016-10-24 2016-10-24
#> 5 5 2015-05-27 2016-10-24
#> 6 7 2016-10-15 2016-10-24
#> 7 8 2016-11-16 2016-11-16
#> 8 11 2016-04-24 2016-11-16
#> 9 3 2016-03-31 2016-11-16
#> 10 12 2015-02-14 2016-11-16
reprexパッケージ(v0.2.1)によって2019-05-21に作成されました
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加