我有一个这样的数据框

> 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相关问答推荐

如何按行和列组合多个格式?

R包terra在投影时如何决定模板格栅属性?

通过R访问MoveApps API

将模拟变量乘以多个观测结果中的模拟变量

更新合适的R mgcv::bam模型报告无效类型(关闭).'';错误

使用gggrassure减少地块之间的空间

有没有一种方法可以从函数中创建一个值的列表,然后将这些值变成R中的直方图?我一直觉得不行

r—绘制相交曲线

lightgbm发动机在tidymmodels中的L1正则化""

如何改变x轴比例的列在面

R—将各种CSV数字列转换为日期

多个模拟序列间的一种预测回归关系

从圆到R中的多边形的标绘雷达图

如何在ggplot2中创建多个y轴(每个变量一个)

R仅当存在列时才发生变异

用满足特定列匹配的另一行替换NA行

如何在GALT包的函数&geom_x样条线中调整线宽

名字的模糊匹配

如何在内联代码中添加额外的空格(R Markdown)

在鼠标悬停时使用Plotly更改geom_point大小