Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 检索具有“主导”行的唯一组合_R_Unique_Subset - Fatal编程技术网

R 检索具有“主导”行的唯一组合

R 检索具有“主导”行的唯一组合,r,unique,subset,R,Unique,Subset,我有一个数据集,可以用以下代码生成 df <- data.frame( "Inv" = c("Name1", "Name1", "Name1", "Name1", "Name2", "Name2", "Name2", "Name3", "Name3", "Name3"), "Loc"=c("Code1", "Code1", "Code2", "Code3", "Code2", "Code1", "Code2", "Code1", "Code2", "Cod

我有一个数据集,可以用以下代码生成

df <- data.frame(
        "Inv" = c("Name1", "Name1", "Name1", "Name1", "Name2", "Name2", "Name2", "Name3", "Name3", "Name3"), 
        "Loc"=c("Code1", "Code1", "Code2", "Code3", "Code2", "Code1", "Code2", "Code1", "Code2", "Code3")
    )
数据集按“Inv”排序。我需要从每组记录中提取一行,这些记录的“Inv”值相同。提取的行可以是第一行,也可以是具有主要“Loc”的行。为了进一步解释,我给出了以下选择的结果和理由

结果

逻辑是

提取第一行Name1,Code1,因为组合Name1:Code1在值为Name1的“Inv”集合中出现两次。其他组合Name1:Code2和Name1:Code3各只出现一次。因此,Name1:Code1是“主要”情况

第二个Name2,Code2被提取,因为组合Name2:Code2在集合中出现两次

第三行Name3,Code1被提取,因为所有三个组合Name3:Code1,Name3:Code2,Name3:Code3每个只出现一次,并且由于Name3:Code1是集合中的第一行,所以它被选中

我可以通过在“Inv”上排序并逐行遍历数据集来实现这一点。但这是一个1200万行的数据集,需要花费太多时间

有没有更简单、更快的方法


谢谢你的帮助

您可以尝试这样的方法,计算每个Inv中的Loc数,只保留具有最大值的Loc行,并为每个剩余组取第一行。注意,ArrangeOwname、.by_group=TRUE对于示例数据不是必需的,但我认为对于完整的数据集,您将需要它。

图书馆管理员; df%>%作为可存储%>%行名到列%>% 集团byInv,Loc%>% 突变计数=n%>% 集团单位按投资%>% filterLoc_count==maxLoc_count%>% ArrangeOwnName、.by_group=TRUE%>% 总结所有第一%>% 选择INV,Loc >一个tibble:3x2 >Inv Loc > >1名称1代码1 >2名称2代码2 >3姓名3代码3
@akrun,我认为OP想要一个稍微不同的答案,因为他们希望在每个Inv组中保持最频繁出现的loc值。我之所以意识到这一点,是因为我对这个措辞类似的问题给出了与你相同的答案-