生存時間是在大小爲1 x n
的有序向量x
中給出的數值時間測量。對於x
中的兩個時間點,聯繫被定義爲x[i] == x[j]
,其中如果所有中間時間都是關係,則排序強制i
和j
相鄰,i+1 == j
或k
指數分開。用於統計生存時間中的關係的高效計數器(R)
鑑於x
我需要一個有效的計數器,返回(1)唯一時間向量(無雙),(2)每次關係計數。
下面是我的判斷代碼。有沒有更有效的方法來做到這一點?
我們有一些時間對指數5,6和9和10
x = 1:10
x[5] = 6
x[10] = 9
領帶indentifier關係:
x_new <- ties <- numeric()
n <- length(x)
i = 1; k=1
while(i <= n){
d = NA
if(i+1<=n) {d = x[i] - x[i+1]}
j = 0
while(d==0 & (i+j+1)<=n){
j = j + 1
d = x[i] - x[i+j+1]
}
x_new[k] = x[i]
ties[k] = j + 1
i = i + j + 1
k = k + 1
}
給予期望的結果:
cbind(x_new,ties)
x_new ties
[1,] 1 1
[2,] 2 1
[3,] 3 1
[4,] 4 1
[5,] 6 2
[6,] 7 1
[7,] 8 1
[8,] 9 2
你想要'rle(x)'? –
根據您的向量關係的定義可以只在一行中。所以,我認爲'table(x)'或'data.frame(table(x))'也可以。 – AntoniosK
@AntoniosK true我現在意識到我需要顯式代碼,因爲需要在第一個'while'循環中執行另一個動作。見下面的評論。也許我會提出這個問題 – tomka