【发布时间】:2014-06-16 08:49:53
【问题描述】:
我有这个大型数据框,其中包含重复 ID 的记录,这些记录位于多个组中,如下所示:
ID GROUP
-- ------
1 GROUPA
1 GROUPB
3 GROUPA
3 GROUPC
3 GROUPC
2 GROUPB
如何获得每个组中唯一记录的计数,以及组之间重叠的 ID 数量?喜欢:
# Unique To Group Overlap with others Uniques not in group
------ --------------- ------------------- -------------------
GROUPA 1 2 1
GROUPB 1 1 2
GROUPC 1 1 2
所以重叠是由 ID:
- 如果 ID 对 GROUP 是唯一的 - 那么对 Group 是唯一的
- 如果 ID 在其他组中重复,则为重叠
- 如果 ID 不存在于组中但存在于其他组中 - 它在组中不是唯一的
目前我正在考虑在这样的循环中执行此操作:
GROUPA = df[which(df$Group == 'A'), ]
for (id in df$id) {
if is.element(id, GROUPA):
GroupACount <- GroupACount+1
etc
但不确定如何进行重叠。但是是否有更好的方法可以使用 apply 和 %in%?
提前致谢
【问题讨论】:
-
问题不是很清楚。我看不到重叠是如何计算的
-
@sayandasgupta - 抱歉,刚刚添加了说明。
-
您想要的输出是否代表您提供的数据?
-
对于未来的问题,始终提供与所提供数据相对应的所需输出,否则您只是在浪费大家的时间
-
我也不明白输出是如何构造的。如果您希望每个组 inside 没有唯一性,则“A”和“B”应该有 2 个(因为 2 个 ID 在每个组中出现 一次),而“C”应该有 1 (ID 3 出现两次),不是吗?如果您希望每个组都没有唯一性到,那么“A”和“C”应该有0,“B”应该有1?在“unique_not”中,您是否计算存在于任何地方但在特定组中的 ID?另外,我也没有“重叠”。您能否逐步解释一下您的输出中的一行是如何构造的?抱歉,如果我遗漏了什么,但我真的不明白发生了什么。