Подсчитать количество групп с одинаковым значением в строке матрицы в R - PullRequest
1 голос
/ 19 февраля 2020

В приведенном ниже примере я показываю первую строку матрицы из симуляции в R. Строка представляет один индивидуум в моей симуляции, а столбцы представляют дни. Если у человека жар в определенный день, то это закодировано как «1» в этой матрице. Я хочу вывести количество раз, когда у человека поднялась температура. В приведенном ниже примере это будет 4 раза (4 набора по 1 с). Кто-нибудь знает, как закодировать это для подсчета смежных 1 в качестве одного вхождения?

out_fever [1,]

 [1] 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0

1 Ответ

0 голосов
/ 19 февраля 2020

Мы l oop по строкам с apply и используем rle для вычисления количества блоков 1 в каждой строке

out_fever$n_fever <- apply(out_fever, 1,  function(x)  with(rle(x), sum(values==1)))

Использование воспроизводимого примера для первой строки

v1 <- c(0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,  
      1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0)
with(rle(v1),  sum(values == 1))
#[1] 4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...