【问题标题】:Comparing two vectors and calculating differences to corresponding elements比较两个向量并计算对应元素的差异
【发布时间】:2019-03-27 03:01:43
【问题描述】:

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

假设向量看起来像这样:

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”的元素。然后计算和总结“时间”向量中对应和下一个元素的差值,然后除以总时间。 如何编写一个函数来计算在任何给定状态下花费的时间比例?

【问题讨论】:

  • 感谢您提供示例数据。到目前为止,您尝试过什么?
  • 这是一个家庭作业问题吗:D

标签: r


【解决方案1】:

计算每个元素之间的差,得到相应状态的时间,然后对按状态排序的时间求和。

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)]

【讨论】:

    猜你喜欢
    • 2021-10-03
    • 2022-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-25
    • 1970-01-01
    相关资源
    最近更新 更多