如何删除 R 中仅出现在一个变量级别且从不出现第二个变量级别的所有参与者?
Posted
技术标签:
【中文标题】如何删除 R 中仅出现在一个变量级别且从不出现第二个变量级别的所有参与者?【英文标题】:How do I remove all participants in R that only occur with one single variable level and never with the second one? 【发布时间】:2016-03-31 15:58:33 【问题描述】:我正在使用 R 分析在线社区数据集。非常感谢您的帮助,因为我遇到了一个问题。这是一个大纲:
数据集:每个用户的用户名都可用。每一行代表一个用户在一个在线社区中的活动。示例 a:第 1 行显示用户“blue”是在线社区 x 的“成员”,到目前为止他已向该社区贡献了一篇文章。示例 b:第 5 行显示用户“blue”也是在线社区 y 的“所有者”,到目前为止,他已向该社区 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*
【问题讨论】:
我不明白In other words, I want to remove the users 'orange', 'purple', 'black'and 'white'
与您的问题的其他描述有何关联。此外,似乎应该为在线社区增加一个专栏,因为从您的示例中并不清楚。
澄清一下,如果用户名不显示为 both owner
和 member
?
@Adam,在那种情况下,为什么red
没有被删除,例如?
因为red
同时显示为成员和所有者(第 3、6 行)
亚当是对的。红色显示为成员和所有者。只有显示为 ONLY 成员或 ONLY 所有者的用户才能被删除。
【参考方案1】:
我假设我评论中的断言是正确的。
使用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 行可能有点难以理解,因为它链接了 3 个操作。
-
计算每个用户名/角色组合的观察次数。
丢弃每个组合的观察次数并计算每个用户名的角色数。
仅限于只有 1 个角色的用户名,并返回用户名向量
【讨论】:
以上是关于如何删除 R 中仅出现在一个变量级别且从不出现第二个变量级别的所有参与者?的主要内容,如果未能解决你的问题,请参考以下文章
Java从不在方法中声明变量的访问级别,无论是不是是静态的[关闭]
在用R语言编程中,界面上出现了“+”号,是啥意思?如何删除错误的输入,如何清屏?谢谢
如果在 Flutter 中仅按下空格键,则会出现 VSCode 智能感知