我想对一个数据帧进行子集设置,使其只包含具有三列的唯一组合的行.我的情况与this个问题中的情况类似,但我想保留数据中的其他列.以下是我的例子:

> df
  v1  v2  v3   v4  v5
1  7   1   A  100  98 
2  7   2   A   98  97
3  8   1   C   NA  80
4  8   1   C   78  75
5  8   1   C   50  62
6  9   3   C   75  75

请求的输出是这样的,在这里我只寻找基于v1、v2和v3的独特 case :

> df.new
  v1  v2  v3   v4  v5
1  7   1   A  100  98 
2  7   2   A   98  97
3  8   1   C   NA  80
6  9   3   C   75  75

如果我能恢复非唯一行,那也太好了:

> df.dupes
  v1  v2  v3   v4  v5
3  8   1   C   NA  80
4  8   1   C   78  75
5  8   1   C   50  62

我在sql(here)中看到了一个关于如何实现这一点的相关问题,但在R中我无法得到这个问题.我相信这很简单,但混用unique()和subset()并没有什么成效.提前谢谢.

推荐答案

您可以使用duplicated()功能查找唯一的组合:

> df[!duplicated(df[1:3]),]
  v1 v2 v3  v4 v5
1  7  1  A 100 98
2  7  2  A  98 97
3  8  1  C  NA 80
6  9  3  C  75 75

要仅获取副本,可以从两个方向进行判断:

> df[duplicated(df[1:3]) | duplicated(df[1:3], fromLast=TRUE),]
  v1 v2 v3 v4 v5
3  8  1  C NA 80
4  8  1  C 78 75
5  8  1  C 50 62

R相关问答推荐

是否可以通过另一个DF的内容过滤数据帧列表?

返回句子中最长的偶数长单词

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

咕噜中的元素列表:map

如何修复R码的置换部分?

在数学中正确显示摄氏度、开氏度或华氏度

为什么在ggplot2中添加geom_text这么慢?

如果第一个列表中的元素等于第二个列表的元素,则替换为第三个列表的元素

Rplotly中的Sankey Diagram:意外连接&

如何在观测缺失的地方添加零

如何删除仅在数据集顶部和底部包含零的行

在使用tidyModels和XGBoost的二进制分类机器学习任务中,所有模型都失败

R-按最接近午夜的时间进行筛选

以字符格式导入的ExcelElectron 表格日期列标题

在另一个包中设置断点&S R函数

带RStatix的Wilcoxon环内检验

计算来自单独分组的分幅的值的百分位数

按镜像列值自定义行顺序

R:如何在数据集中使用Apply

Broom.Mixed::Augment不适用于Sample::分析