簡體   English   中英

計算分裂矢量的平均長度

[英]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, 22, 2, 2 ,長度43 因此,該狀態的“平均”長度為(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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM