gpt4 book ai didi

r - 查找具有唯一值组合的行 (R)

转载 作者:行者123 更新时间:2023-12-04 10:49:42 26 4
gpt4 key购买 nike

这比标题更复杂一些,我敢肯定,如果我能想出一种更好的方法来描述它,我可以更好地在谷歌上搜索它。

我有看起来像这样的数据:

SET                     ID    
100301006 1287025
100301006 1287026
100301010 1287027
100301013 1287030
100301011 1287027

并且我想识别并选择那些行中的每个值都具有该列的唯一值的行。在上面的示例中,我只想获取行:
100301013              1287030

我不要 SET 100301006 ,因为它匹配 ID 字段中的 2 个不同记录( 12870251287026 )。同样,我不想要 SET 100301010ID它匹配的记录( 1287027 )也可以匹配另一个 SET ( 10030011 )。

在某些情况下,可能会有 2 个以上的匹配项。

我可以在循环中做到这一点,但这似乎是一个黑客。我喜欢基本的 R 或 data.table 解决方案,但我对 dplyr 不太感兴趣(试图最小化依赖性)。

最佳答案

这是一个快速的 base-R hack:

df <- read.table(header = TRUE, stringsAsFactors = FALSE, text = "
SET ID
100301006 1287025
100301006 1287026
100301010 1287027
100301013 1287030
100301011 1287027")

counts <- sapply(df, function(x) { tb <- table(x); tb[ match(x, names(tb)) ]; })
counts
# SET ID
# 100301006 2 1
# 100301006 2 1
# 100301010 1 2
# 100301013 1 1
# 100301011 1 2

在这一点上,我们有每个元素在其列中被找到的次数……所以我们想要所有计数都为 1 的行。

df[ rowSums(counts == 1) == ncol(df), ]
# SET ID
# 4 100301013 1287030

关于r - 查找具有唯一值组合的行 (R),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59058453/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com