删除基于2列数据的重复项

时间:2019-02-08 07:16:34

标签: r

我有一组数据:

x <- c(rep("A", 3), rep("B", 3), rep("C",2))
y <- c(1,1,2,4,1,1,2,2)
z <- c(rep("E", 1), rep("F", 4), rep("G",3))
df <-data.frame(x,y,z)

我只想在x列和z列都重复的情况下删除重复的行。 在这种情况下,应用代码后,第2,3行将保留1行,第4,5行将保留1行,第7,8行将保留1行 怎么做?

1 个答案:

答案 0 :(得分:0)

您可以使用一个简单的条件来子集数据:

x <- c(rep("A", 3), rep("B", 3), rep("C",2))
y <- c(1,1,2,4,1,1,2,2)
z <- c(rep("A", 1), rep("B", 4), rep("C",3))
df <-data.frame(x,y,z)

df
df[!df$x == df$z,] # the ! excludes all rows for which x == z is TRUE

  x y z
2 A 1 B
3 A 2 B
6 B 1 C

编辑:正如@RonakShah所评论的那样,要排除重复的行,请使用

df[!duplicated(df[c("x", "z")]),]

df[!duplicated(df[c(1, 3)]),]

  x y z
1 A 1 A
2 A 1 B
4 B 4 B
6 B 1 C
7 C 2 C