문제

데이터 프레임에 새 열에 일련의 숫자를 제공하고자합니다.그러나이 시퀀스는 다른 열의 값을 기준으로 여러 번 반복합니다.(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
      }
    }
.

도움이 되었습니까?

해결책

언제든지 "v1"변수 변경 을 변경하기 때문에 rle를 찾고있을 수 있습니다.

다음을 시도하십시오 :

> 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

잘 Ananda가 나의 노력을 이깁니다 :

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