我有一个包含4列数据的数据框:url ID、url、title和pageviews,如下所示:
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和页面视图的数据框。我想实现一个完整的数据帧,再次使用url和title。如下所示:
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))发布于 2018-08-02 09:20:48
一种方法是这样做:
df_merged <-
df %>%
group_by(ID, title) %>%
summarise(url = first(url),
total_pageviews = sum(pageviews)
)您需要考虑R如何知道在第2页的情况下url的期望输出是/url-2/,而不是/url-2/?test或其他什么。在这里,我随意决定要放在那里的值是出现在组中的first()值。
https://stackoverflow.com/questions/51644188
复制相似问题