Tôi có một khung dữ liệu như vậybản sao trong nhiều cột
> 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
Tôi muốn loại bỏ các hàng nơi có được lặp lại giá trị trong cột C và cột d. Vì vậy, trong ví dụ này, các hàng 2,3,5 và 6 sẽ bị loại bỏ.
Tôi đã sử dụng này, mà làm việc:
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
nhưng có vẻ như vụng về và tôi không thể không nghĩ rằng có một cách tốt hơn. Bất kỳ đề xuất nào?
Trong trường hợp bất cứ ai muốn tái tạo dữ liệu-frame đây là 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")
Xem thêm http://stackoverflow.com/questions/13742446/duplicates-in-multiple-columns –