Создайте условную последовательность в кадре данных в R - PullRequest
0 голосов
/ 04 марта 2019

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

Вот примерная матрица того, что я пытаюсь выполнить.Первый столбец - это исходные данные.Второй столбец - это то, что я пытаюсь создать.

try <- matrix(c(rep(0,4),rep(1,3),rep(0,2),rep(1,2), rep(0,4), seq(1,3,1), rep(0,2), seq(4,5,1)),ncol=2)

Я пытался использовать seq_long, while и т. Д., Но не могу заставить его работать.Любая помощь / указатели будут оценены.

Ответы [ 2 ]

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

Может быть, вам нужно следующее двухшаговое решение.

try[, 2] <- ave(try[, 1], try[, 1], FUN = seq_along)
try[try[, 1] == 0, 2] <- 0

try[, 2]
#[1] 0 0 0 0 1 2 3 0 0 4 5

Однострочник -

ave(try[, 1], try[, 1], FUN = function(x) if(any(x == 0)) x else seq_along(x))
#[1] 0 0 0 0 1 2 3 0 0 4 5
0 голосов
/ 04 марта 2019

Рассмотрим try как ваши данные (1-й столбец), которые вы можете сделать:

try$second_column <- cumsum(try[,1])*try[,1]
...