使用dplyr合并R中的数据帧行

时间:2018-08-02 01:06:07

标签: r dataframe dplyr rows

我有一个包含4列数据的数据框:url IDurltitlepageviews,如下所示:

    ID          url  title pageviews
1 /12/      /url-1/ Page 1      1123
2 /13/      /url-2/ Page 2      4432
3 /13/ /url-2/?test Page 2         6
4 /14/      /url-4/ Page 4      4242

我花了很长时间研究如何合并具有相同ID的行(页面)并求和pageviews。我最终使用dplyr获得了这段代码:

df_merged <- df %>% group_by(ID) %>% summarise_at(c("pageviews"), sum)

但是,它将创建仅具有ID和综合浏览量的另一个数据框。我想使用urltitle来实现一个完整的数据帧。像这样:

    ID          url  title pageviews
1 /12/      /url-1/ Page 1      1123
2 /13/      /url-2/ Page 2      4438
3 /14/      /url-4/ Page 4      4242

如何获得此结果?

这是我的数据框:

df <- data.frame(ID = c("/12/", "/13/", "/13/", "/14/"), 
             url = c("/url-1/", "/url-2/", "/url-2/?test", "/url-4/"),
             title = c("Page 1", "Page 2", "Page 2", "Page 4"),
             pageviews = c(1123, 4432, 6, 4242))

1 个答案:

答案 0 :(得分:1)

一种方法是这样的:

df_merged <- 
       df %>% 
       group_by(ID, title) %>% 
       summarise(url = first(url),
                 total_pageviews = sum(pageviews)
                )

您需要考虑R如何知道在第2页的情况下url的期望输出是/url-2/而不是/url-2/?test或其他。在这里,我只是随意决定要放入的值是组中出现的first()值。