我正在尝试创建一个路径序列。以下是示例数据集:
df <- structure(list(
sess_id = c(4, 4, 4, 4, 4, 4, 4, 7, 7, 7, 7, 7),
Page = c("A", "B", "C", "D", "A", "C", "B", "B", "C", "D", "A", "D")),
.Names = c("sess_id", "Page"),
row.names = c(NA, -12L),
class = "data.frame")
Run Code Online (Sandbox Code Playgroud)
这是表:
| 会话ID | 页 |
|---|---|
| 4 | A |
| 4 | 乙 |
| 4 | C |
| 4 | D |
| 4 | A |
| 4 | C |
| 4 | 乙 |
| 7 | 乙 |
| 7 | C |
| 7 | D |
| 7 | A |
| 7 | D |
我想添加三列,如下所示:
| 会话ID | 页 | 小路 | 开始 | 结尾 |
|---|---|---|---|---|
| 4 | A | |||
| 4 | 乙 | AB | A | 乙 |
| 4 | C | ABC | A | C |
| 4 | D | A B C D | A | D |
| 4 | A | ABCDA | A | A |
| 4 | C | BCDAC | 乙 | C |
| 4 | 乙 | CDACB | C | 乙 |
| 7 | 乙 | |||
| 7 | C | 公元前 | 乙 | C |
| 7 | D | BCD | 乙 | D |
| 7 | A | BCDA | 乙 | A |
| 7 | D | BCAD | 乙 | D |
我试图在每个会话中创建一个包含五个页面的路径序列。并绘制该五页序列的开头和结尾。
如果您不想将元素保留Path为字符串,可以使用
df %>%\n group_by(sess_id) %>%\n mutate(Path = lapply(accumulate(Page, c), last, 5)) %>%\n ungroup() %>%\n mutate(\n Start = Page[pmax(1, (1:n()) - 4)],\n End = Page\n )\nRun Code Online (Sandbox Code Playgroud)\n这使
\n# A tibble: 12 \xc3\x97 5\n sess_id Page Path Start End \n <dbl> <chr> <list> <chr> <chr>\n 1 4 A <chr [1]> A A\n 2 4 B <chr [2]> A B\n 3 4 C <chr [3]> A C\n 4 4 D <chr [4]> A D\n 5 4 A <chr [5]> A A\n 6 4 C <chr [5]> B C\n 7 4 B <chr [5]> C B\n 8 7 B <chr [1]> D B\n 9 7 C <chr [2]> A C\n10 7 D <chr [3]> C D\n11 7 A <chr [4]> B A\n12 7 D <chr [5]> B D\nRun Code Online (Sandbox Code Playgroud)\n您可以使用accumulate+substr如下所示
library(dplyr)\nlibrary(purrr)\n\ndf %>%\n group_by(sess_id) %>%\n mutate(Path = accumulate(Page, paste0)) %>%\n ungroup() %>%\n mutate(\n Path = substr(Path, nchar(Path) - 4, nchar(Path)),\n Start = substr(Path, 1, 1),\n End = Page\n )\nRun Code Online (Sandbox Code Playgroud)\n这使
\n# A tibble: 12 \xc3\x97 5\n sess_id Page Path Start End \n <dbl> <chr> <chr> <chr> <chr>\n 1 4 A A A A\n 2 4 B AB A B\n 3 4 C ABC A C\n 4 4 D ABCD A D\n 5 4 A ABCDA A A\n 6 4 C BCDAC B C\n 7 4 B CDACB C B\n 8 7 B B B B\n 9 7 C BC B C\n10 7 D BCD B D\n11 7 A BCDA B A\n12 7 D BCDAD B D\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
132 次 |
| 最近记录: |