我想创建一个新的数据框列,帮助我根据每行第一列的值(索引)快速识别重复的行。假设我的数据帧(df)有近18000行 - 观察而新列被称为“唯一”,我尝试了以下但是没有成功......
df$unique = ifelse(df[row.names(df):1]==df[row.names(df)-1:1], "YES", "NO")
代码背后的基本原理是,只要这些值不匹配,同一行的单元格与同一列中的单元格之间的比较就可以给出唯一的条目。
我的数据框
index num1 num2
1 12 12
1 12 12
2 14 14
2 14 14
2 14 14
3 18 18
4 19 19
答案 0 :(得分:2)
您可以使用duplicated
功能。请注意,非唯一列的第一次出现不是重复的,因此我们需要它两次,从头开始和从头开始搜索。
# Toy data, where the first two rows are identical, the third row is unique
df <- data.frame(a = c(1, 1, 1), b = c(1, 1, 2))
# Find unique columns
df$unique <- !(duplicated(df) | duplicated(df, fromLast = TRUE))
输出:
> df
a b unique
1 1 1 FALSE
2 1 1 FALSE
3 1 2 TRUE