通过保留其他列值作为参考来删除行(如果不唯一)

时间:2019-03-27 23:42:06

标签: r dataframe

我有一个数据集,我想为其检查具有相同列U值的所有行,并检查后面A列之后的删除行。如果行顺序不变,那会更好。

我尝试使用duplicated(),但没有成功。有一个更好的方法吗?请提出建议。

输入数据

data <- read.table(header = TRUE, text ="U  A   B   C   D   E   F   G   H   I
A   C   1   2   31.9    32.1    1   32  32  32
                   A    D   1   3   31.9    32.1    1   32  32  32
                   B    C   1   4   31.9    32.1    1   32  32  32
                   B    D   1   5   31.9    32.1    1   32  32  32
                   ")

预期产量

U   A   B   C      D       E    F   G   H   I
A   C   1   2   31.9    32.1    1   32  32  32
B   C   1   4   31.9    32.1    1   32  32  32

2 个答案:

答案 0 :(得分:2)

duplicated确实有效!

> data[!duplicated(data$U), ]
  U A B C    D    E F  G  H  I
1 A C 1 2 31.9 32.1 1 32 32 32
3 B C 1 4 31.9 32.1 1 32 32 32

或者

> data[duplicated(data$U, fromLast = TRUE), ]
  U A B C    D    E F  G  H  I
1 A C 1 2 31.9 32.1 1 32 32 32
3 B C 1 4 31.9 32.1 1 32 32 32

答案 1 :(得分:1)

我们可以使用unique中的data.table

library(data.table)
unique(setDT(data), by = "U")
#   U A B C    D    E F  G  H  I
#1: A C 1 2 31.9 32.1 1 32 32 32
#2: B C 1 4 31.9 32.1 1 32 32 32