首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >根据2列查找重复行,并根据R中第3列的值保留行

根据2列查找重复行,并根据R中第3列的值保留行
EN

Stack Overflow用户
提问于 2022-03-07 18:54:35
回答 2查看 136关注 0票数 0

我有一个包含ID号、日期和测试结果的数据集,并且需要创建一个最终数据集,其中每一行都包含一个唯一的ID、日期和测试结果值。如何根据ID和日期查找重复项,然后根据特定的测试结果值保留行?

代码语言:javascript
运行
复制
df <- data.frame(id_number = c(1, 1, 2, 2, 3, 3, 3, 4),
                 date = c('2021-11-03', '2021-11-19', '2021-11-11', '2021-11-11', '2021-11-05', '2021-11-05', '2021-11-16', '2021-11-29'),
                 result = c(0,1,0,0,0,9,0,9) )

  id_number date       result
      <dbl> <chr>       <dbl>
1         1 2021-11-03      0
2         1 2021-11-19      1
3         2 2021-11-11      0
4         2 2021-11-11      0
5         3 2021-11-05      0
6         3 2021-11-05      9
7         3 2021-11-16      0
8         4 2021-11-29      9

df <- unique(df)

在使用了唯一的函数之后,仍然会留下重复的id_number和date行,以及不同的测试结果。其中,我只需要保留等于0或1的行,并排除任何9s。

在下面的例子中,我希望保留第4行,排除第5行。我不能简单地排除row =9的行,因为我想为任何非重复的观测保留这些行。

代码语言:javascript
运行
复制
  id_number date       result
      <dbl> <chr>       <dbl>
1         1 2021-11-03      0
2         1 2021-11-19      1
3         2 2021-11-11      0
4         3 2021-11-05      0
5         3 2021-11-05      9
6         3 2021-11-16      0
7         4 2021-11-29      9
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-03-07 19:01:17

你可以:

代码语言:javascript
运行
复制
library(tidyverse)

df %>%
  group_by(id_number, date) %>%
  filter(!(result == 9 & row_number() > 1)) %>%
  ungroup()

# A tibble: 6 x 3
  id_number date       result
      <dbl> <chr>       <dbl>
1         1 2021-11-03      0
2         1 2021-11-19      1
3         2 2021-11-11      0
4         3 2021-11-05      0
5         3 2021-11-16      0
6         4 2021-11-29      9
票数 1
EN

Stack Overflow用户

发布于 2022-03-07 19:46:04

为便于理解,请使用:

( a)与9行不同的行:

代码语言:javascript
运行
复制
df <- subset(df,df$result != 9)

然后

( b)删除重复的:

代码语言:javascript
运行
复制
df <- subset(df, duplicated(df)==FALSE)

因此,如果您想要特定的列:

代码语言:javascript
运行
复制
df <- subset(df,duplicated(df$result)==FALSE)

或者:

代码语言:javascript
运行
复制
df <- subset(df,duplicated(df[ ,2:3])==FALSE)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71385935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档