r - 检查每个组的数据是否重复
问题描述
我想检查我的数据并为 R 中的一组数据分配重复值。在这种情况下,该组是 ID。
这就是数据的样子。
ID, SET
1,1
1,1
1,3
1,2
2,1
2,1
2,1
2,1
3,2
3,2
3,2
3,2
我想得到这个结果。
ID, SET, Index
1,1,0
1,1,0
1,3,0
1,2,0
2,1,1
2,1,1
2,1,1
2,1,1
3,2,1
3,2,1
3,2,1
3,2,1
谢谢你的帮助
解决方案
按“ID”分组后,通过检查“SET”中不同元素的数量来创建“索引”列
library(dplyr)
df1 %>%
group_by(ID) %>%
mutate(index = as.integer(n_distinct(SET) ==1))
# A tibble: 12 x 3
# Groups: ID [3]
# ID SET index
# <int> <dbl> <int>
# 1 1 1 0
# 2 1 1 0
# 3 1 3 0
# 4 1 2 0
# 5 2 1 1
# 6 2 1 1
# 7 2 1 1
# 8 2 1 1
# 9 3 2 1
#10 3 2 1
#11 3 2 1
#12 3 2 1
或者另一种选择是base R
df1$index <- +(with(df1, ave(SET, ID, FUN = function(x) length(unique(x))) == 1))
或者一个选项table
transform(df1, index = ID %in% names(which(table(unique(df1)$ID) == 1)))
数据
df1 <- structure(list(ID = c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 3L, 3L,
3L, 3L), SET = c(1, 1, 3, 2, 1, 1, 1, 1, 2, 2, 2, 2)),
class = "data.frame", row.names = c(NA,
-12L))
推荐阅读
- android-studio - 使用现有文档创建错误报告并共享
- oracle - SQL 文件未在 Oracle 12C 数据库启动时执行
- python - 检索大型 Firestore 文档的内容
- excel - Web 浏览器控件中的 JavaScript
- typescript - 在 A-Frame 中动态创建的添加事件监听器
- ios - 在项目`Runner.xcodeproj`中找不到名为`Runner`的目标确实找到了`dev`和`prod`
- python - 删除页面重新加载时的数据库异常错误
- python - 在 Azure Functions 中设置 python TimerTrigger 的正确方法?
- mysql - 展开并分组以映射范围内的所有日期
- spring-webflux - spring webflux出错时如何返回错误请求?