删除重复项无效的技术 (R)

Technique for Removing Duplicates Not Working (R)

我尝试了一种删除重复项的方法,我很想知道为什么它不起作用。

取这个数据框:

o<-c(123,123,123,124,125,126)
c<-c(1,2,3,4,5,6)
d<-c(8,8,NA,8,8,8)
df<-data.frame(o,c,d)
un<-unique(df$o)
df<-df[un,]
df

现在 df 都是 NA 的。谁能告诉我为什么????

旁注 在我的真实数据集中(私人信息,因此样本 df):同样的代码没有生成 NA所有值。我注意到一个问题,因为会发生以下情况:length(df$var)=100, length(unique(df$var))=90。美好的。然后我会 运行 上面的代码(重写 df),然后我会看到:length(df$var)=90, length(unique(df$var))=80。如果我继续循环,我最终会得到一排所有 NA。

我试图重现此错误,但尝试删除重复项的代码只生成了所有 NA,这与我的真实数据集不同。无论如何,我希望在代码中发现问题能够回答我的问题。

在此先感谢您的帮助。

我想你想要这样的东西:

un_logical <- !duplicated(df$o)
df<-df[un_logical,]

你创建后检查过un是什么吗?根据 the documentationunique returns 唯一 元素 ,而不是 唯一元素 的索引。在您的示例中,un == c(123,124,125,126) 超出了 df.

行的范围

如果您在真实数据集中搜索的列是此一般范围内的类似整数,那么您的真实数据集可能足够长,unique 找到的唯一元素是真实索引。

这是您的原始数据框

> df<-data.frame(o,c,d)
> df
   o c  d
1 123 1  8
2 123 2  8
3 123 3 NA
4 124 4  8
5 125 5  8
6 126 6  8

删除列中的重复项 "o"

>df[!duplicated(df[,c("o")]),]
    o c d
 1 123 1 8
 4 124 4 8
 5 125 5 8
 6 126 6 8

删除列中的重复项 "d"

>df[!duplicated(df[,c("d")]),]
    o c  d
 1 123 1  8
 3 123 3 NA