我有一個向量,在這個向量中我必須計算數據從0切換到100並返回到0的數量。下面給出了一個例子。計算向量中開關個數的計數
Input
X1<-c(100,100,100,0,0,0,0,0,100,100,100,100,100,0,0,0,0,100,100,100,0,0,100,100)
所以輸出應該是作爲值開始於0住在100的一段時間,回到0.我的要求就是指望有多少次這樣的切換已經發生。我知道這個問題,但這隻能給我一個長度。
在此先感謝您的幫助。
我有一個向量,在這個向量中我必須計算數據從0切換到100並返回到0的數量。下面給出了一個例子。計算向量中開關個數的計數
Input
X1<-c(100,100,100,0,0,0,0,0,100,100,100,100,100,0,0,0,0,100,100,100,0,0,100,100)
所以輸出應該是作爲值開始於0住在100的一段時間,回到0.我的要求就是指望有多少次這樣的切換已經發生。我知道這個問題,但這隻能給我一個長度。
在此先感謝您的幫助。
這看起來足夠
sum(X1[-1] != X1[-length(X1)])/2
假設是
X1
X1
最後一個元素等於第一個元素兩個獨特的值,也就是說,它切換回到最初的狀態。你可以做這樣的事情,
sum(diff(X1) == 100)
#[1] 3
#Or
min(sum(diff(X1) == 100), sum(diff(X1) == -100))
#[1] 3
您可以運行rle
,然後通過在時間values
三個要素遍歷,看是否需要的條件已經得到滿足。
with(rle(X1),
sum(sapply(3:length(lengths), function(i)
values[i-2] == 0 & values[i-1] == 100 & values[i] == 0)))
#[1] 2
或者因爲你提到RLE'地板(長度(RLE(X1)$長度)/ 2)' – G5W
@Anish,如果預期的答案是** 2 **,因爲你不知道,如果最後運行'100'切換回'0'?也許你只是在尋找從'0'到'100'的開關? – CPak
@ChiPak是的,我相信因爲我沒有控制最後甚至是第一個元素。 –