有效计数器,用于计算生存时间(R)中的结数

有效计数器,用于计算生存时间(R)中的结数,r,performance,counter,R,Performance,Counter,生存时间是在x中大小为1 x n的有序向量中给出的数值时间度量。对于x中的两个时间点,平局被定义为x[i]==x[j],其中排序强制i和j相邻,i+1==j,或者如果所有中间时间都是平局,则k索引分开 给定x我需要一个有效的计数器,该计数器返回(1)唯一时间向量(无双精度),(2)每次一个tie计数 下面是我的基本代码。有没有更有效的方法 我们有时会在指数5和6以及9和10上出现联系 x = 1:10 x[5] = 6 x[10] = 9 领带识别器: x_new <- ties <

生存时间是在
x
中大小为
1 x n
的有序向量中给出的数值时间度量。对于
x
中的两个时间点,平局被定义为
x[i]==x[j]
,其中排序强制
i
j
相邻,
i+1==j
,或者如果所有中间时间都是平局,则
k
索引分开

给定
x
我需要一个有效的计数器,该计数器返回(1)唯一时间向量(无双精度),(2)每次一个tie计数

下面是我的基本代码。有没有更有效的方法

我们有时会在指数5和6以及9和10上出现联系

x = 1:10
x[5] = 6
x[10] = 9
领带识别器:

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
}

只需使用
rle

sapply(rle(sort(x)), cbind)
#     lengths values
#[1,]       1      1
#[2,]       1      2
#[3,]       1      3
#[4,]       1      4
#[5,]       2      6
#[6,]       1      7
#[7,]       1      8
#[8,]       2      9

是否要
rle(x)
?根据向量的定义,领带只能排成一行。因此,我认为
table(x)
data.frame(table(x))
也可以。@AntoniosK true我现在意识到我需要显式代码,因为在第一个
循环中需要执行另一个操作。见下面的评论。也许我会回答这个问题谢谢。我需要显式的代码,因为对于每个
I
,需要对另一个长度相同的
x
变量执行额外的操作,我在代码中省略了该变量。但对于我提出的问题,你的答案是详尽无遗的。也许我会回答我的问题。
sapply(rle(sort(x)), cbind)
#     lengths values
#[1,]       1      1
#[2,]       1      2
#[3,]       1      3
#[4,]       1      4
#[5,]       2      6
#[6,]       1      7
#[7,]       1      8
#[8,]       2      9