[英]calculating the average length of split vector
考慮以下向量(或數據幀或數據表)
a = data.frame(x = c(2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1))
x
表示'狀態',1或2.矢量數據表示空間數據,我希望得到每個狀態的平均長度。 換句話說,我們可以看到,對於固定state = 2
有兩個段: 2, 2, 2, 2
和2, 2, 2
,長度4
和3
。 因此,該狀態的“平均”長度為(4 + 3)/2 = 3.5
。
我的實際數據集的狀態為1-9,向量中有超過1,000,000個點。 我的困難是“打破”向量並計算細分。 我正在使用R,但偽代碼會很好。
注意:如果有人能想出更好的標題,請告訴我或提交編輯。
你可以用組合解決這個問題?rle
和?tapply
。 rle
計算連續元素的數量,並將它們存儲在lengths
,並將相應的值存儲在values
。 tapply
用於計算分組mean
:
r <- rle(a$x)
tapply(r$lengths, INDEX=r$values, FUN=mean)
# 1 2
# 3.5 3.5
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.