2012-08-22 2 views
4

5 개의 고유 한 수준이있을 때마다 새 그룹을 만듭니다.R : 데이터에서 n 개의 고유 한 수준이 발생할 때마다 그룹화 요인이 발생합니다.

예.

  • 새로운 수준
  • 가 고정 된 없다 나중에 데이터에서 발생

    • 레벨은 데이터를 나중에 반복 얻을 : 데이터에 대한 몇 가지 가정 : varB 원하는 결과

      structure(list(varA = structure(c(2L, 2L, 3L, 5L, 4L, 1L, 1L, 
      2L, 3L, 5L, 4L, 4L, 1L), .Label = c("badger", "cat", "dog", "monkey", 
      "turtle"), class = "factor"), varB = c(1L, 1L, 1L, 1L, 1L, 1L, 
      1L, 2L, 2L, 2L, 2L, 2L, 2L)), .Names = c("varA", "varB"), class = "data.frame", row.names = c(NA, 
      -13L)) 
      

      편집입니다 데이터에서의 순서 지정

  • +0

    시작 레벨이 항상 같을까요? (예를 들어,이 경우'cat') – A5C1D2H2I1M1N2O1R2T1

    +0

    @mrdwab 게시물을보기 전에 설명을 수정하고있었습니다. 고정 _ 시작 _ 레벨이 없습니다. – Jose

    답변

    4

    몫에 대한 모듈러스 사용 "새로운"값의 음 :

    dat$cu5 <- with(dat, 1+ cumsum(c(0, varA[-length(varA)] != varA[-1])) %/% 5) 
    

    당신은 당신이 그것을 고려하고 필요하지 않을 것입니다 레이블을 추가하면 번호가 1에서 시작하려면 하나에만 필요합니다 추가.

    +0

    +1 큰 해결책! 이것은 다른 게시물에서 언급 한 문제를 해결했습니다! – Jose

    +0

    아 그래, 좋은 질문이야. 그룹화를 수행 할 고유 수준이 충분하지 않으면 어떻게됩니까? 나는 그것이 단지 1 개의 그룹을 가지고 있다고 기대할 것이다. 그러나 그것이 5로 담당자를 그룹화하는 것처럼 보인다. – Jose

    +0

    나는 그 인스턴스에서 작동하지 않는 것 같아요. lselzers와 나는 @ ttmaccer의 작품을 더 이상 사용하지 않을 것이다. 왜냐하면 그의 첫 번째 해결책에서'! duplicated (dat $ varA)'표현식은 첫 번째 시리즈 이후 영원히 FALSE를 리턴하고이 테스트 케이스는 그의 에러를 던진다. 두번째 해결책. –