住院号 姓名 等唯一值变量的检查与筛选
重复值所在的行
使用本地数据 鸢尾花(yuān wěi huā)做示例
【R语言】【数据清洗】重复ID数据获取比对
#加载内置数据
data(iris)
data=iris
#因为iris这里没有唯一的ID,像姓名,住院号no..
#手动生成一个 no,代表唯一值的变量
#可以看到我设置了 41 35 67 和27 是重复的
data$no <- c(paste0('no',c(1:146,41,35,67,27)))
#【1】手动生成新ID
data$ID <- c(paste0('ID',1:150))
#【2】检查重复
table(duplicated(data$no)) #TRUE代表重复的个数
which(duplicated(data$no)) #重复所在的行(第二次出现)
data[duplicated(data[ ,'no']), ] #重复所在的行的数据(第二次出现)
#【3】提取重复的no,并向量化
a=data[duplicated(data[ ,'no']), ]
a
name <- t(a[,'no'])
dd <- as.vector(name)
dd
#【4】查看要去掉的ID,
b=data[which(data$no%in% dd),]
b[, c(1:7)]
#【5】假设要去掉的是 no27=ID27 no35=ID148 no41=ID147 no67=ID67
#【6】去除重复,根据自己创立的ID唯一值去掉不要的
data_unique <- subset(data,ID!="ID27")
data_unique <- subset(data_unique,ID!="ID148")
data_unique <- subset(data_unique,ID!="ID147")
data_unique <- subset(data_unique,ID!="ID67" )
#s上面一个个换进去,避免提示:长的对象长度不是短的对象长度的整倍数
#【7】最后检查重复情况,都是FALSE表述没有重复了
table(duplicated(data_unique$no))
快速删除重复,随意删除重复的中的一个
#检查ID重复情况
table(duplicated(N6_shunchan$病案号))
#删除重复的行
N6_shunchan2 <- N6_shunchan[!duplicated(N6_shunchan$病案号), ]
#在检查下
table(duplicated(N6_shunchan2$病案号))