我在Reddit上有一组帖子和评论数据的行和列,其中一行代表一个帖子及其评论。由于一个帖子可以包含多个评论,因此我具有相同ID(帖子ID)和不同评论ID的行。我想将具有相同ID的行合并为一行,并在列中使用所有不同的注释ID-“注释ID”以逗号分隔。而且由于帖子数据(标题,正文等)是重复的(如附图所示),所以我不需要将它们合并为每行仅出现一次。
![重复行] [1] 1
我可以合并用逗号分隔的相关列的评论信息,但我不知道如何获得一次不需要合并的重复发布信息。
all_reddits <- all_posts_and_comments %>%
group_by(id) %>%
summarise(
comment_id = paste(comment_id, collapse=","),
comment_author = paste(comment_author, collapse = ","),
comment_body = paste(comment_body, collapse = ","),
comment_score = paste(comment_score, collapse = ","),
comment_created_date = paste(comment_created_date, collapse = ","),
comment_link = paste(comment_link, collapse=",")
)
我尝试了R:dplyr的summarise_all()和summarise_at(),但是我一直遇到错误。
答案 0 :(得分:0)
我相信您可以对每个 post 列使用诸如$dest = 'abc.zip';
$source = 'abc.zip';
$ftp = ftp_connect("ftp.example.com");
ftp_login($ftp, "username", "password");
ftp_put($ftp, $dest, $source, FTP_BINARY);
ftp_close($ftp);
之类的摘要语句来解决您的问题。
还有一种方法是将所有 post 列简单地包含到您的post_datapoint_xyz = first(post_datapoint_xyz)
列表中:)
//更新:您可以将其编写为
group_by
all_reddits <- all_posts_and_comments %>%
group_by_at(vars(starts_with('post_'))) %>%
summarise(...)
或summarise_all
不会让您走到这里,因为您想将两个不同的函数(粘贴和第一个)应用于两个不同的变量组(注释和帖子),而两个{ {1}}函数不支持。
this thread中有很多建议,但是对于您的用例来说,这些建议可能会显得过份……
但是,请注意:您可能并没有通过单独连接每个注释列来帮自己一个忙,因为这样做会丢失它们之间的关系。 (想象其中一个包含逗号的评论,您将无法撤消此摘要。)
如果您确实想在结果中保留完整的注释数据,则可以考虑仅在所有将它们存储为列表或嵌套df的注释中创建一个摘要列。
//更新:如果要执行此操作,可以像这样使用the nest function:
summarise_at
如果您以后希望取消这些注释的嵌套,则summarise_*
函数可以提供帮助。
all_reddits <- all_posts_and_comments %>%
nest(starts_with('comment_'), .key = 'comments')