gpt4 book ai didi

删除重复项,同时保留 R 中的 NA

转载 作者:行者123 更新时间:2023-12-02 20:31:46 26 4
gpt4 key购买 nike

我的数据如下所示:

a<-data.frame(ID=c("A","B","C","C",NA,NA),score=c(1,2,3,3,5,6),stringsAsFactors=FALSE)
print(a)
ID score
A 1
B 2
C 3
C 3
<NA> 5
<NA> 6

我正在尝试删除重复项而不进行 R 处理 <NA>作为重复项以获得以下内容:

b<-data.frame(ID=c("A","B","C",NA,NA),score=c(1,2,3,5,6),stringsAsFactors=FALSE)
print(b)
ID score
A 1
B 2
C 3
<NA> 5
<NA> 6

我尝试过以下方法:

b<-a[!duplicated(a$ID),]
library(dplyr)
b<-distinct(a,ID)
print(b)

但是两者都对待 <NA>作为重复 ID并删除一个,但我想保留 <NA> 的所有实例。想法?谢谢!

最佳答案

一种直接的方法是将原始数据帧分成两部分,其中 ID 为 NA,而 ID 为非 NA。执行不同的过滤器,然后将数据帧重新组合在一起:

a<-data.frame(ID=c("A","B","C","C",NA,NA),score=c(1,2,3,3,5,6),stringsAsFactors=FALSE)

aprime<-a[!is.na(a$ID),]
aNA<-a[is.na(a$ID),]

b<-aprime[!duplicated(aprime$ID),]

b<-rbind(b, aNA)

只需做一点工作,就可以将其减少到 1-2 行代码。

关于删除重复项,同时保留 R 中的 NA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48448741/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com