删除重复项无效的技术 (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 documentation、unique
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
我尝试了一种删除重复项的方法,我很想知道为什么它不起作用。
取这个数据框:
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 documentation、unique
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