5

How can I keep my duplicates, but remove unique values based on one column(qol)?

ID   qol  Sat
A     7   6
A     7   5
B     3   3 
B     3   4
B     1   7
C     2   7
c     1   2

But I need this:

ID   qol  Sat
A     7   6
A     7   5
B     3   3 
B     3   4

What can I do?

zx485
  • 28,498
  • 28
  • 50
  • 59
lesa Bee
  • 51
  • 1
  • 5

1 Answers1

8

dplyr solution:

library(dplyr)

ID <- c("A", "A", "B", "B", "B", "C", "c")
qol <- c(7,7,3,3,1,2,1)
Sat <- c(6,5,3,4,7,7,2)

test_df <- data.frame(cbind(ID, qol, Sat))

filtered_df <- test_df %>%
               group_by(qol) %>%
               filter(n()>1)

Please note that this will return

       ID    qol    Sat
1      A      7      6
2      A      7      5
3      B      3      3
4      B      3      4
5      B      1      7
6      c      1      2

If you also want to remove the two rows where qol == 1 but the IDs are different, just do:

filtered_df <- test_df %>%
               group_by(ID, qol) %>%
               filter(n()>1)

This will return the sample output you supplied in the question.

Emma Clarke
  • 301
  • 1
  • 4
  • thank you for responding, but I am trying to write a code to extract the rows when the ID and qol columns are duplicated, resulting in the omission of the last three rows. – lesa Bee Sep 20 '18 at 00:21
  • I take my previous comment back, I got your code to work. – lesa Bee Sep 20 '18 at 01:40