首页 > 解决方案 > 检查每个组是否只有相同的观察值/值

问题描述

如何检查唯一组是否只有相同的观察结果?当每组只有相同的值(此处为 group1)时,我想要一个带有 1 的附加列(虚拟)。例如

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)????

标签: rdplyr

解决方案


您可以使用n_distinct计算每组中唯一值的数量,如果每组中唯一值的数量为 1,则分配value1。

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

由于您有数字数据,因此您也可以在此处使用sdvar

sample <- sample %>%
             group_by(name) %>%
             mutate(dummy = as.integer(sd(value) == 0))
             #mutate(dummy = as.integer(var(value) == 0))

推荐阅读