比较两个向量并计算与相应元素的差

时间:2019-03-26 18:46:13

标签: r

我已经在R中定义了一个生死过程,它可以处于状态0、1,2和3。我有一个向量“状态”,列出了这些状态发生的顺序,另一个向量列出这些状态更改发生时间的“时间”。

让我们说向量看起来像:

state <- c(0, 1, 0, 1, 2, 1, 0, 1, 2, 3)
time <- c(0.00, 0.03, 0.12, 0.78, 0.87, 0.94, 0.97, 1.18, 1.23, 1.30)

例如,如果我想计算在状态1中花费的时间比例,我可以看到“时间”中的哪些元素与“状态”中发生“ 1”的元素相对应。然后计算并总结“时间”向量中相应元素与下一个元素之间的差异,然后将其除以总时间。 我该如何编写一个函数来计算在任何给定状态下花费的时间比例?

1 个答案:

答案 0 :(得分:0)

计算每个元素之间的差值,以获取处于相应状态的时间,然后对状态排序的时间求和。

state <- c(0, 1, 0, 1, 2, 1, 0, 1, 2, 3)
time <- c(0.00, 0.03, 0.12, 0.78, 0.87, 0.94, 0.97, 1.18, 1.23, 1.30)

df <- data.frame(state=state,time=time)
df$diff <- c(diff(df$time),0)

tim.p.state <- data.frame(time=sapply(split(df,df$state),function(df){return(sum(df$diff))}))
tim.p.state$proportion <- tim.p.state$time/time[length(time)]