Manipulating|Manipulating Data-用R查找并移除重复的记录

问题 【Manipulating|Manipulating Data-用R查找并移除重复的记录】你想查找和(或)移除向量或列表里重复项。
方案 向量:

# 生成一个向量 set.seed(158) x <- round(rnorm(20, 10, 5)) x #>[1] 14 1184 125 10 1033 1160 168 108566# 对于每一个元素:它是否重复(第一个值不算) duplicated(x) #>[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSETRUE FALSETRUETRUE FALSE FALSE FALSE #> [15]TRUETRUETRUETRUETRUETRUE# 重复项的值 # 注意“6”出现了三次,所以它有俩 x[duplicated(x)] #> [1] 103 118 108566# 重复的条目,没有重复 unique(x[duplicated(x)]) #> [1] 103 11856# 移除重复的数据,他们效果一样: unique(x) #>[1] 14 1184 125 10360 16 x[!duplicated(x)] #>[1] 14 1184 125 10360 16

列表:
# 一个样本列表: df <- read.table(header=TRUE, text=' label value A4 B3 C6 B3 B1 A2 A4 A4 ')# 每一行是否有重复? duplicated(df) #> [1] FALSE FALSE FALSETRUE FALSE FALSETRUETRUE# 显示重复项 df[duplicated(df),] #>label value #> 4B3 #> 7A4 #> 8A4# 显示唯一重复项 (行名可能不同,但值相同) unique(df[duplicated(df),]) #>label value #> 4B3 #> 7A4# 移除重复的数据,他们效果一样: unique(df) #>label value #> 1A4 #> 2B3 #> 3C6 #> 5B1 #> 6A2 df[!duplicated(df),] #>label value #> 1A4 #> 2B3 #> 3C6 #> 5B1 #> 6A2

原文链接:http://www.cookbook-r.com/Manipulating_data/Finding_and_removing_duplicate_records/

    推荐阅读