Входные последовательные числа без определенного конца в столбце данных в R

StackOverflow https://stackoverflow.com//questions/23007982

Вопрос

Я хотел бы дать последовательность номеров для нового столбца в кадр данных.Но эта последовательность повторяется несколько раз на основе значения в другом столбце.(I.e он начинается с 1 до тех пор, пока что конкретное значение не будет изменено на другое значение).

Моя проблема заключается в том, как определить точку окончания для каждой последовательности в r.

Часть моей рамки данных с столбцом "v2", которую я собираюсь добавить:

  V1      V2(new added column with sequential numbers)           
  12      1
  12      2
  12      3
  12      4
  12      5
  13      1
  13      2
  13      3
  13      4
  13      5
  13      6
  14      1
  14      2
  14      3
  14      4
.

Я пытался использовать следующий код, который не работал!

count <- table(df$V1)
c <- as.integer(names(count)[df$V1==12])
    repeat{
      df$V2<- seq(1,c, by=1)
      if(df$V1!=12){
        break
      }
    }
.

Это было полезно?

Решение

Звучит так, как вы можете искать rle, поскольку вы заинтересованы в любое время «V1» переменные изменения .

Попробуйте следующее:

> sequence(rle(df$V1)$lengths)
 [1] 1 2 3 4 5 1 2 3 4 5 6 1 2 3 4
.

Другие советы

RLE - это очень хорошее решение, но вы также можете использовать Ave:

tab$V2 <- ave(tab$V1, tab$V1, FUN=seq_along)
.

HTH

Ну Ананда бьет мои усилия:

vec = numeric(0)
for(i in unique(df$V1)){
  n = length(df$V1[df$V1 == i])
  vec = c(vec, 1:n)
}
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top