我想获得非零的每个系列的最大值。 例如:
x <- c(0, 0, 0, 10, 50, 30, 0, 0, 0, 0, 30, 6, 5, 44, 0, 0, 1, 2)
我想在R代码中获得50,44,2。
答案 0 :(得分:3)
您可以使用rle
:
zero <- rle(x == 0)
y <- sapply(split(x, rep(seq_along(zero$lengths), zero$lengths)), max)
y[y > 0]
## 2 4 6
## 50 44 2
或者,类似地,使用“data.table”:
library(data.table)
data.table(x)[, max(x), rleid(x == 0)][V1 > 0]
## rleid V1
## 1: 2 50
## 2: 4 44
## 3: 6 2