r - 检查每个组是否只有相同的观察值/值
问题描述
如何检查唯一组是否只有相同的观察结果?当每组只有相同的值(此处为 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)????
解决方案
您可以使用n_distinct
计算每组中唯一值的数量,如果每组中唯一值的数量为 1,则分配value
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
由于您有数字数据,因此您也可以在此处使用sd
或var
。
sample <- sample %>%
group_by(name) %>%
mutate(dummy = as.integer(sd(value) == 0))
#mutate(dummy = as.integer(var(value) == 0))
推荐阅读
- jmeter - '%20/' 被添加到示例请求 URL
- elasticsearch - elasticsearch的设置主管
- json - GraphQL 到模式标记
- c++ - 如何在 Visual Studio 2019 中链接模板库
- c# - 如何比较两个字符数组并查看位置?
- sql - 为特定国家/地区的数据创建 Azure 环境?
- reactjs - 我制作了一个 MERN 堆栈,但在为用户制作角色时遇到了问题。有什么解决办法吗?
- javascript - 为什么设置我的网格的位置不会否定之前的翻译?
- python - 检测全局变量更新以在每次发生时运行函数
- csv - 使用 Ansible 解析 CSV