我正在用R分析一个在线社区数据集,我非常感谢你的帮助,因为我被困在一个问题上。以下是一个大纲:
数据集:每个用户的用户名都可用。每一行代表一个在线社区中一个用户的活动。示例a:第1行显示,用户“蓝色”是在线社区x的“成员”,到目前为止,他已经为该社区贡献了一篇文章。示例b:第5行显示,用户'blue‘也是在线社区y的所有者,到目前为止,他已经为该社区贡献了2个帖子。看下面!
问题:在任何在线社区中,我想从仅以成员或用户身份活动的数据集中删除所有用户。我也想删除他们,如果他们是活跃的成员在几个在线社区。换句话说,我想删除用户的“橙色”、“紫色”、“黑色”和“白色”。重要事项:数据集包含> 1Mio。一排排。我正在寻找一种考虑到这一点的方法:)谢谢。
username role # of posts
blue member 1
blue member 0
red owner 6
red owner 1
blue owner 2
red member 1
blue owner 3
blue member 2
blue owner 1
blue owner 0
red member 8
green owner 1
red owner 2
red member 3
green member 4
yellow owner 5
green member 3
green owner 4
yellow owner 5
yellow member 6
yellow owner 8
*orange owner 1
orange owner 2
purple member 3
purple member 4
black owner 4
white member 4*发布于 2016-03-31 16:24:34
我认为我的评论中的说法是正确的。
使用data.table包,因为我有一个狂热的心情。请注意,转换到数据表将破坏以后的任何数据帧语法,因此如果您试图将其插入到其他代码中,则需要在以后使用setDF(users2)将其转换回来。
library('data.table')
setDT(users)
users_to_remove <- users[, .N, .(username, role)][, .N, username][N == 1, username]
users2 <- users[!(username %in% users_to_remove)]
print(setdiff(users$username, users2$username))第三行可能有点难理解,因为它将3个操作链接在一起。
https://stackoverflow.com/questions/36338281
复制相似问题