我有一个名为user_role的数据框,其中有一个键值(用户ID)。我想看看有多少这些用户标识只有一个用于称为角色的分类变量的值。R如何找到有多少用户只有一个值
下面是一些样本数据:
userid role
ame1 programmer
ame1 programmer
ame1 analyst
cal5 programmer
cal5 programmer
up2 sales
我想cal5是在输出数据集中,因为世界上只有一个角色,但ame1不应该在输出数据帧,因为它有一个以上的角色值。
我已经试过这样的事情:
("select userid, role, count(*) from user_role group by userid, role having count(*) == 1")
但只有让用户用1行或角色值。
("select userid, role, count(*) from user_role group by userid, role having count(*) > 1")
没有得到我只有一个角色价值,即使他们有多个行
我想有两个cal5和UP2输出显示。理想情况下,我希望能够有一个条款,我只包括具有两行或更多行的用户。
感谢
你最后的评论让我困惑。本来我以为你只是想'count(独特的角色)',但是你提到2行或更多的行,这将排除'up2'正确? – sgeddes
是的,如果我可以指定一个人不得不包含在输出数据框中的最小行数,那就太好了。这有帮助吗?但是他们仍然不得不在两行的最小值中只有1个值。 – Jazzmine
'table(unique(df1)$ userid)'会给你每个用户'userid'唯一'role'的数量。或者使用'data.table',你可以添加条件'library(data.table); setDT(df1)[,if(uniqueN(role)== 1&.N> 1).SD,by = userid]' –