gpt4 book ai didi

r - 多列重复

转载 作者:行者123 更新时间:2023-12-03 08:48:04 24 4
gpt4 key购买 nike

我有这样的数据框

> df
a b c d
1 1 2 A 1001
2 2 4 B 1002
3 3 6 B 1002
4 4 8 C 1003
5 5 10 D 1004
6 6 12 D 1004
7 7 13 E 1005
8 8 14 E 1006

我想删除在c列和d列中有重复值的行。因此,在此示例中,将删除第2、3、5和6行。

我使用了这个,它的工作原理是:
df[!(df$c %in% df$c[duplicated(df$c)] & df$d %in% df$d[duplicated(df$d)]),]
>df
a b c d
1 1 2 A 1001
4 4 8 C 1003
7 7 13 E 1005
8 8 14 E 1006

但它看起来笨拙,我不禁认为还有更好的方法。
有什么建议?

如果有人想重新创建数据帧,则这里是dput:
df = structure(list(a = c(1, 2, 3, 4, 5, 6, 7, 8), b = c(2, 4, 6, 
8, 10, 12, 13, 14), c = structure(c(1L, 2L, 2L, 3L, 4L, 4L, 5L,
5L), .Label = c("A", "B", "C", "D", "E"), class = "factor"),
d = c(1001, 1002, 1002, 1003, 1004, 1004, 1005, 1006)), .Names = c("a",
"b", "c", "d"), row.names = c(NA, -8L), class = "data.frame")

最佳答案

如果您两次使用duplicated,它将起作用:

df[!(duplicated(df[c("c","d")]) | duplicated(df[c("c","d")], fromLast = TRUE)), ]

a b c d
1 1 2 A 1001
4 4 8 C 1003
7 7 13 E 1005
8 8 14 E 1006

关于r - 多列重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13742446/

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