比方说,我有一个像这样的数据框,其中有两个用户和一些网站活动已经按会话分组。
库(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中的相关功能。谢谢!
答案 0 :(得分: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