我有一组数据:
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行 怎么做?
答案 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