gpt4 book ai didi

R:将数据框减少为跨两列完全匹配的行

转载 作者:行者123 更新时间:2023-12-01 09:28:27 25 4
gpt4 key购买 nike

这可能是重复的,但我使用了各种不同的关键字试图找到答案,但都失败了。我想要做的是从数据框中删除跨多个列的所有不匹配实例:

id = c(1,1,1,2,2,3,3,4,5,5)
type = c("a", "a", "b", "b", "b", "a", "b", "b", "a", "a")
df = data.frame(id,type)


id type

1 1 a
2 1 a
3 1 b
4 2 b
5 2 b
6 3 a
7 3 b
8 4 b
9 5 a
10 5 a

在这种情况下,我只想保留每个 ID 中完全匹配的行,所以我的输出应该是

    id type
4 2 b
5 2 b
8 4 b
9 5 a
10 5 a

提前感谢任何可以在这里帮助我的人!

最佳答案

假设您的 ids 是完整且连续的,这应该仅使用基本 R 就可以正常工作:

ids = which(tapply(df$type, df$id, function(x) length(unique(x))==1)
subset(df, id %in% ids)

如果不是,这应该可以代替:

ids = unique(df$id)[which(tapply(df$type, df$id, function(x) length(unique(x))==1)]

对于这些情况,我倾向于使用 data.table:

dt = data.table(df)
dt[,if(length(unique(type))==1) .SD, by=id]

关于R:将数据框减少为跨两列完全匹配的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19191245/

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