-1

I want to subset the data.frame below in a way that only IDs are kept, which don't show up multiple times:

data <- data.frame(Product=c('A', 'B', 'B', 'C'),
                   Likeability=c(80, 80, 82, 70),
                   Score=c(31, 33, 33, 33),
                   Quality=c(16, 32, 56, 18))

Should turn into:

data
    Product Likeability Score Quality
1       A          80    31      16
2       C          70    33      18

If I use commands like unique() or distinct() or duplicated() it would usually keep one of the two observations of product B. I would like to find a way how only the unique values are kept which I can apply to a large data.frame. Preferably with a dplyr solution but also open to other ideas.

Sunderam Dubey
  • 1
  • 11
  • 20
  • 40
econ9595
  • 5
  • 2

1 Answers1

2

You can try group + filter with condition n()==1 like below

data %>%
  group_by(Product) %>%
  filter(n() == 1) %>%
  ungroup()

which gives

  Product Likeability Score Quality
  <chr>         <dbl> <dbl>   <dbl>
1 A                80    31      16
2 C                70    33      18
ThomasIsCoding
  • 96,636
  • 9
  • 24
  • 81