我有一个问题,我没有找到答案。有类似的问题,其解决方案在我的情况下不太起作用。我有一个数据集,有四列,如下例所示:
Name Session Sequence Page
Bob 001 001 home
Bob 001 002 news
Bob 001 003 contact_us
Bob 001 004 home
Sally 001 001 home
Sally 001 002 contact_us
Bob 002 001 home
John 001 001 home
John 001 002 about_us
我想要的是这样的东西
Name Session Pages
Bob 001 home-news-contact_us-home
Sally 001 home-contact_us
Bob 002 home
John 001 home-about-us
现在的诀窍是,序列可以是1:44,也可以是介于两者之间的任何地方。我在R中编码并且可以使用SQLite。我还需要在破折号中连接,但这很容易。如果R在SAS中有类似“滞后”的东西,那将会非常简单。
答案 0 :(得分:3)
你已经有了一些很好的答案,但这里有一个dplyr
,希望能提供一些可读性。
library(dplyr)
df %>%
group_by(Name, Session) %>% # create summary data for each unique group
summarise(Page = paste0(Page, collapse = "-"))
给出了
Source: local data frame [4 x 3]
Groups: Name
Name Session Page
1 Bob 1 home-news-contact_us-home
2 Bob 2 home
3 John 1 home-about_us
4 Sally 1 home-contact_us
重读您的问题似乎页面序列很重要,即您希望finally页面列按顺序从左到右依次访问。因此,我们还包括一个额外的步骤。
library(dplyr)
df %>%
group_by(Name, Session) %>% # create summary data for each unique group
arrange(Sequence) %>% # makes sure that Sequence for each group is in ascending order.
summarise(Page = paste0(Page, collapse = "-"))