0

how do I check if unique groups only have identical observations? I'd like to have an additional column (dummy) with a 1 when there are only identical values per group (here group1). Eg

sample <- data.frame(name = c("group1", "group1", "group1", "group2","group2", "group2"),
                     value = c(23,23,23,44,33,44))

sample <- sample %>% group_by(name) %>% mutate(identical_valuesOnly = if_else(name = value,1,0)????
Ronak Shah
  • 377,200
  • 20
  • 156
  • 213
Kim Ida
  • 5
  • 3

1 Answers1

3

You can use n_distinct to count number of unique values in each group and assign 1 if number of unique value in each group is 1.

library(dplyr)

sample <- sample %>%
           group_by(name) %>%
           mutate(dummy = as.integer(n_distinct(value) == 1))

#   name   value dummy
#  <chr>  <dbl> <int>
#1 group1    23     1
#2 group1    23     1
#3 group1    23     1
#4 group2    44     0
#5 group2    33     0
#6 group2    44     0

Since you have numeric data you can also use sd or var here.

sample <- sample %>%
             group_by(name) %>%
             mutate(dummy = as.integer(sd(value) == 0))
             #mutate(dummy = as.integer(var(value) == 0))
Ronak Shah
  • 377,200
  • 20
  • 156
  • 213