>

이러한 데이터 프레임이 있다고 가정 해 보겠습니다. 여기서 두 명의 사용자와 일부 세션으로 그룹화 된 웹 사이트 활동이 있습니다.

라이브러리 (dplyr)

df <- tibble(user = c("A", "A", "A", "A", "A", "B", "B", "B", "B", "B"),
             activity = c("new", "same", "same", "new", "same", "new", "new", "same", "same", "new"))

그러나 사용자가 세션에 이와 같이 표시되도록 세션 번호를 매기고 싶습니다.

df_marked <- tibble(user = c("A", "A", "A", "A", "A", "B", "B", "B", "B", "B"),
         activity = c("new", "same", "same", "new", "same", "new", "new", "same", "same", "new"),
         session = c(1, 1, 1, 2, 2, 1, 2, 2, 2, 3))

이것은 간단하다고 확신하지만 R의 관련 기능을 모르겠습니다. 감사합니다!

  • 답변 # 1

    dplyr 를 사용할 수 있습니다  이를 위해 :

    library(dplyr)
    df %>%
      group_by(user) %>%
      mutate(session = cumsum(ifelse(activity == "new", 1, 0)))
    # A tibble: 10 x 3
    # Groups:   user [2]
       user  activity session
       <chr> <chr>      <dbl>
     1 A     new            1
     2 A     same           1
     3 A     same           1
     4 A     new            2
     5 A     same           2
     6 B     new            1
     7 B     new            2
     8 B     same           2
     9 B     same           2
    10 B     new            3
    
    

  • 이전 r - 두 데이터 프레임에서 목록을 작성하고 해당 목록을 열에 넣습니다
  • 다음 Oracle SQL - 오라클 sql - 여러 행을 하나로 결합