Максимальное время без наблюдения в R - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть вектор с 100 000 записей, состоящих из числа от 1 до 6 (я имею в виду, запись одна = 4, запись вторая = 2 и т. Д.).В основном, выборка в 100 000 раз вектора, содержащего 1, 2, 3, 4, 5 и 6.

Я хочу вычислить максимальное количество последовательных записей без значения (например, для этих чисел: 1, 1,3,4,3,6,6, максимальное количество раз, когда 6 не появляется, равно 5, поскольку у нас есть 5 наблюдений, которые не были 6 до появления 6), и я думаю оитерация с циклом for для вектора, подсчитывающего, сколько раз желаемое значение не появилось, но я не уверен, как не дать ему просто посчитать, сколько раз это значение появляется.Это что-то похожее на полосу, вместо того, чтобы сосчитать, сколько раз у нас есть последовательное наблюдение, я хочу посчитать, сколько раз у нас нет наблюдения.

Я просто застрял, размышляя оструктура цикла for, и мне кажется, что есть более простой подход, есть идеи?

1 Ответ

0 голосов
/ 28 февраля 2019

Мы можем использовать rle для этого --- он сообщает вам количество последовательных значений.Мы будем использовать пример в вашем вопросе:

x = c(1,1,3,4,3,6,6)
rle(x)
# Run Length Encoding
#   lengths: int [1:5] 2 1 1 1 2
#   values : num [1:5] 1 3 4 3 6

## Use it to solve your problem
rx = rle(x != 6)
# This will tell us the number of consecutive TRUE values (x isn't 6)
# and FALSE values (x is 6)
# We want to find the maximum length where the value is TRUE:
max(rx$lengths[rx$values])
# [1] 5

Вы должны быть в состоянии приспособить это, чтобы решить вашу проблему.Если у вас есть проблемы, опубликуйте пример.

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