标题让它有些复杂,我敢肯定,如果我能想到一种更好地描述它的方法,那么我可以用google更好地描述它。
我有看起来像这样的数据:
SET ID
100301006 1287025
100301006 1287026
100301010 1287027
100301013 1287030
100301011 1287027
我想确定并选择那些行中的每个值在该列中都具有唯一值的那些行。在上面的示例中,我只想获取行:
100301013 1287030
我不想要SET
100301006
,因为它与ID字段(1287025
和1287026
)中的2个不同的记录匹配。同样,我也不想使用SET,100301010
因为ID
它与(1287027
)匹配的记录也可以与另一个SET(10030011
)匹配。
在某些情况下,可能会有2场以上的比赛。
我可以循环执行此操作,但是这似乎很简单。我很喜欢基本的R或data.table解决方案,但是我对dplyr并不太感兴趣(试图最小化依赖)。
使用base R
,也许您可以使用ave()
它:
r <-df[which(with(df,ave(seq(nrow(df)),SET,FUN = length)*ave(seq(nrow(df)),ID,FUN = length)) == 1),]
> r
SET ID
4 100301013 1287030
数据
df <- read.table(text="SET ID
100301006 1287025
100301006 1287026
100301010 1287027
100301013 1287030
100301011 1287027",header = T)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句