データフレームの繰り返し値を0に置き換えたい。ある程度の繰り返しが許可されている。
a<-c(1,2,3,4,4,4,5,5,5,5,5,9,9,150,220,220)
許容される繰り返し回数が4の場合、予想される解決策は次のようになります。
a_new<-c(1,2,3,4,4,4,0,0,0,0,0,9,9,150,220,220)
4回以上繰り返される値は、0に置き換えられます。
rleの使用
b<-rle(a)
繰り返し回数がわかります
Run Length Encoding
lengths: int [1:8] 1 1 1 3 5 2 1 2
values : num [1:8] 1 2 3 4 5 9 150 220
そしてそれを0に置き換えます
b$values[b$lengths>4]<-0
Run Length Encoding
lengths: int [1:8] 1 1 1 3 5 2 1 2
values : num [1:8] 1 2 3 0 0 9 150 220
問題は、この場合は0をデータに戻す方法です。
使用できます inverse.rle
a_new<-c(1,2,3,4,4,4,0,0,0,0,0,9,9,150,220,220)
b <- rle(a_new)
b$values[b$lengths>4]<-0
inverse.rle(b)
[1] 1 2 3 4 4 4 0 0 0 0 0 9 9 150 220 220
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加