Сравнение двух векторов и вычисление различий с соответствующими элементами - PullRequest
1 голос
/ 26 марта 2019

Я определил процесс рождения-смерти в 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».Затем вычислите и суммируйте различия между соответствующим и следующим поступающим элементом в векторе «время», а затем разделите его на общее время.Как мне написать функцию, которая вычисляет долю времени, проведенного в любом данном состоянии?

1 Ответ

0 голосов
/ 26 марта 2019

Рассчитайте разницу между каждым элементом, чтобы получить время в соответствующем состоянии, а затем сложите за время, упорядоченное по состоянию.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...