1
ゼロ以外の各系列の最大値を求めたい。たとえば :Rコード内のベクトル内の系列の最大値を見つける方法
x <- c(0, 0, 0, 10, 50, 30, 0, 0, 0, 0, 30, 6, 5, 44, 0, 0, 1, 2)
IはRのコードでは50、44、2を取得したいです。
ゼロ以外の各系列の最大値を求めたい。たとえば :Rコード内のベクトル内の系列の最大値を見つける方法
x <- c(0, 0, 0, 10, 50, 30, 0, 0, 0, 0, 30, 6, 5, 44, 0, 0, 1, 2)
IはRのコードでは50、44、2を取得したいです。
あなたは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
ありがとう!あなたはawsomeです! – NOA11120
あなたは問題を少し明確にすることはできますか? 0のランが部分列の区切り文字として機能し、各部分列の最大値が必要なことを意味しますか? –