【发布时间】:2017-09-29 15:10:32
【问题描述】:
我有一个可以使用以下代码生成的数据集
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 在集合中出现两次,'Inv'的值为"Name1"。其他组合 Name1:Code2 和 Name1:Code3 各只出现一次。因此,Name1:Code1 是“主要”情况。第二个
"Name2", "Code2"被提取,因为 Name2:Code2 组合在集合中出现了两次。第三行
"Name3", "Code1"被提取,因为 Name3:Code1、Name3:Code2、Name3:Code3 的所有三个组合都只出现一次,并且因为 Name3:Code1 是集合中的第一行,所以它被选中。
我可以通过对'Inv' 进行排序并逐行遍历数据集来做到这一点。但这是一个 1200 万行的数据集,需要花费太多时间。
有没有更简单快捷的方法?
感谢您的帮助!
【问题讨论】:
-
@akrun,我认为 OP 想要一个稍微不同的答案,因为他们希望在每个
Inv组中保留最频繁出现的loc值。我之所以意识到这一点,是因为我对前面这个措辞相似的问题给出了与您相同的答案 - stackoverflow.com/q/46482459/8475145