在 R 中使用 Tidyverse 查找 "nth attempt"
Finding the "nth attempt" using Tidyverse in R
我有一个数据集,按日期显示每个访问面包店网页的用户的登录信息 unique_session_code。我正在尝试提供一个代码,让我可以确定这是第一次、第二次、第三次等等...该客户的访问,换句话说是“nth_visit”,我真的在寻找解决方案使用 tidyverse 包,但如果没有办法使用 tidyverse 做到这一点,那么所有其他解决方案都将受到赞赏。感谢您的帮助!
USER
LOG_DATE
TX_REV
ALEX
30/04/2021
uyjd
MARY
30/04/2021
dn89
DOLLY
30/04/2021
nqmd0
FRANK
29/04/2021
nsj456
MARY
29/04/2021
zlpa2
DOLLY
29/04/2021
s09dm
ALEX
28/04/2021
jds02
MARY
28/04/2021
kqos98
DOLLY
28/04/2021
uiskk0
这就是我想要的结果:
USER
LOG_DATE
TX_REV
nth_visit
ALEX
28/04/2021
jds02
1
ALEX
30/04/2021
uyjd
2
DOLLY
28/04/2021
uiskk0
1
DOLLY
29/04/2021
s09dm
2
DOLLY
30/04/2021
nqmd0
3
FRANK
29/04/2021
nsj456
1
MARY
28/04/2021
kqos98
1
MARY
29/04/2021
zlpa2
2
MARY
30/04/2021
dn89
3
一个数据框,访问者每次尝试访问该网站时都具有“nth_visit”
我做了什么?
我尝试按时间顺序排列日期并按 ID 分组,并查看了一些我尝试使用函数 rank_dense 的文档,但它没有给我想要的结果。甚至没有关闭。
非常感谢你们
代码:
df<-tibble::tribble(
~USER, ~LOG_DATE, ~TX_REV,
"ALEX", "30/04/2021", "uyjd",
"MARY", "30/04/2021", "dn89",
"DOLLY", "30/04/2021", "nqmd0",
"FRANK", "29/04/2021", "nsj456",
"MARY", "29/04/2021", "zlpa2",
"DOLLY", "29/04/2021", "s09dm",
"ALEX", "28/04/2021", "jds02",
"MARY", "28/04/2021", "kqos98",
"DOLLY", "28/04/2021", "uiskk0")
在 tidyverse 中执行此操作的一种方法是:
df %>% group_by(USER) %>% mutate(nth_visit = seq_along(USER)) %>%
ungroup() %>% arrange(USER, nth_visit)
# A tibble: 9 x 4
USER LOG_DATE TX_REV nth_visit
<chr> <chr> <chr> <int>
1 ALEX 30/04/2021 uyjd 1
2 ALEX 28/04/2021 jds02 2
3 DOLLY 30/04/2021 nqmd0 1
4 DOLLY 29/04/2021 s09dm 2
5 DOLLY 28/04/2021 uiskk0 3
6 FRANK 29/04/2021 nsj456 1
7 MARY 30/04/2021 dn89 1
8 MARY 29/04/2021 zlpa2 2
9 MARY 28/04/2021 kqos98 3
按日期排序会有所帮助,否则访问编号将按数据中出现的顺序而非时间顺序排列。
df %>%
mutate(LOG_DATE_DT = as.Date(LOG_DATE, "%d/%m/%Y")) %>%
arrange(USER, LOG_DATE_DT) %>%
group_by(USER) %>%
mutate(nth_visit = row_number()) %>%
ungroup()
# A tibble: 9 x 5
USER LOG_DATE TX_REV LOG_DATE_DT nth_visit
<chr> <chr> <chr> <date> <int>
1 ALEX 28/04/2021 jds02 2021-04-28 1
2 ALEX 30/04/2021 uyjd 2021-04-30 2
3 DOLLY 28/04/2021 uiskk0 2021-04-28 1
4 DOLLY 29/04/2021 s09dm 2021-04-29 2
5 DOLLY 30/04/2021 nqmd0 2021-04-30 3
6 FRANK 29/04/2021 nsj456 2021-04-29 1
7 MARY 28/04/2021 kqos98 2021-04-28 1
8 MARY 29/04/2021 zlpa2 2021-04-29 2
9 MARY 30/04/2021 dn89 2021-04-30 3
我有一个数据集,按日期显示每个访问面包店网页的用户的登录信息 unique_session_code。我正在尝试提供一个代码,让我可以确定这是第一次、第二次、第三次等等...该客户的访问,换句话说是“nth_visit”,我真的在寻找解决方案使用 tidyverse 包,但如果没有办法使用 tidyverse 做到这一点,那么所有其他解决方案都将受到赞赏。感谢您的帮助!
USER | LOG_DATE | TX_REV |
---|---|---|
ALEX | 30/04/2021 | uyjd |
MARY | 30/04/2021 | dn89 |
DOLLY | 30/04/2021 | nqmd0 |
FRANK | 29/04/2021 | nsj456 |
MARY | 29/04/2021 | zlpa2 |
DOLLY | 29/04/2021 | s09dm |
ALEX | 28/04/2021 | jds02 |
MARY | 28/04/2021 | kqos98 |
DOLLY | 28/04/2021 | uiskk0 |
这就是我想要的结果:
USER | LOG_DATE | TX_REV | nth_visit |
---|---|---|---|
ALEX | 28/04/2021 | jds02 | 1 |
ALEX | 30/04/2021 | uyjd | 2 |
DOLLY | 28/04/2021 | uiskk0 | 1 |
DOLLY | 29/04/2021 | s09dm | 2 |
DOLLY | 30/04/2021 | nqmd0 | 3 |
FRANK | 29/04/2021 | nsj456 | 1 |
MARY | 28/04/2021 | kqos98 | 1 |
MARY | 29/04/2021 | zlpa2 | 2 |
MARY | 30/04/2021 | dn89 | 3 |
一个数据框,访问者每次尝试访问该网站时都具有“nth_visit”
我做了什么?
我尝试按时间顺序排列日期并按 ID 分组,并查看了一些我尝试使用函数 rank_dense 的文档,但它没有给我想要的结果。甚至没有关闭。
非常感谢你们
代码:
df<-tibble::tribble(
~USER, ~LOG_DATE, ~TX_REV,
"ALEX", "30/04/2021", "uyjd",
"MARY", "30/04/2021", "dn89",
"DOLLY", "30/04/2021", "nqmd0",
"FRANK", "29/04/2021", "nsj456",
"MARY", "29/04/2021", "zlpa2",
"DOLLY", "29/04/2021", "s09dm",
"ALEX", "28/04/2021", "jds02",
"MARY", "28/04/2021", "kqos98",
"DOLLY", "28/04/2021", "uiskk0")
在 tidyverse 中执行此操作的一种方法是:
df %>% group_by(USER) %>% mutate(nth_visit = seq_along(USER)) %>%
ungroup() %>% arrange(USER, nth_visit)
# A tibble: 9 x 4
USER LOG_DATE TX_REV nth_visit
<chr> <chr> <chr> <int>
1 ALEX 30/04/2021 uyjd 1
2 ALEX 28/04/2021 jds02 2
3 DOLLY 30/04/2021 nqmd0 1
4 DOLLY 29/04/2021 s09dm 2
5 DOLLY 28/04/2021 uiskk0 3
6 FRANK 29/04/2021 nsj456 1
7 MARY 30/04/2021 dn89 1
8 MARY 29/04/2021 zlpa2 2
9 MARY 28/04/2021 kqos98 3
按日期排序会有所帮助,否则访问编号将按数据中出现的顺序而非时间顺序排列。
df %>%
mutate(LOG_DATE_DT = as.Date(LOG_DATE, "%d/%m/%Y")) %>%
arrange(USER, LOG_DATE_DT) %>%
group_by(USER) %>%
mutate(nth_visit = row_number()) %>%
ungroup()
# A tibble: 9 x 5
USER LOG_DATE TX_REV LOG_DATE_DT nth_visit
<chr> <chr> <chr> <date> <int>
1 ALEX 28/04/2021 jds02 2021-04-28 1
2 ALEX 30/04/2021 uyjd 2021-04-30 2
3 DOLLY 28/04/2021 uiskk0 2021-04-28 1
4 DOLLY 29/04/2021 s09dm 2021-04-29 2
5 DOLLY 30/04/2021 nqmd0 2021-04-30 3
6 FRANK 29/04/2021 nsj456 2021-04-29 1
7 MARY 28/04/2021 kqos98 2021-04-28 1
8 MARY 29/04/2021 zlpa2 2021-04-29 2
9 MARY 30/04/2021 dn89 2021-04-30 3