2

データ フレームの列「AA」で発生した変更をカウントする簡単な方法を探しています。したがって、新しい列「BB」は、以下の df のようになります。

df <- as.data.frame(cbind("Year"=c(2000,2000,2000,2001,2001,2001,2002,2002,2002,2003), "AA"=c(136,137,137,158,162,21,21,55,55,55), "BB"=c(1,2,2,3,4,5,5,6,6,6)))

つまり、「AA」の変化 (増加または減少) は、合計して「BB」で説明する必要があります...

4

2 に答える 2

6

私はこれが好きrleです:

foo <- rle(df$AA)
foo$values <- 1:length(foo$values)
df$BB <- inverse.rle(foo)
于 2013-07-11T14:25:03.083 に答える
6

私はこのように使用することを好みcumsumます:

df$BB <-  cumsum(c(1, head(df$AA, -1) != tail(df$AA, -1)))

ベンチマークx <- sample(1:10,1e4,TRUE):

Unit: microseconds
   expr  min   lq median   uq  max neval
 Jus(x) 1259 1330   1936 1987 5289   100
 Rol(x)  391  402    463  616 3903   100
于 2013-07-11T14:27:33.997 に答える