我有一个包含两列的df:SurveyID
和Species
。
SurveyID=c(1,1,1,2,2,3,3,3)
Species=c(NA,NA,"GRSH",NA,NA,NA,"RAZO","RAZO")
df=data.frame(cbind(SurveyID,Species))
我想在两种情况下删除重复项:
1.删除所有具有相同survey ID
和NA
Species
的重复项
2.具有相同调查ID且混合使用NA
和Species
(例如“ RAZO”)的行仅通过删除带有NA
{{1}的行来显示具有种类的行。 }。
产品df应该如下所示:
Species
我尝试了带有条件的子设置,但是这删除了重复的种类,并用df2=data.frame(cbind(SurveyID=c(1,2,3,3),Species=c("GRSH",NA,"RAZO","RAZO")))
SurveyID
保留了不需要的重复的NA
行。
Species
有什么建议吗?我也是新手,所以让我知道我的问题是否需要澄清/格式化!
答案 0 :(得分:3)
一个选项是
file.txt
答案 1 :(得分:3)
您可以通过过滤所有非NA
Species
的值,然后联接到所有SurveyIDs
的表中来做到这一点
library(data.table)
setDT(df)
df[!is.na(Species)
][df[, .(new = unique(SurveyID))], on = c('SurveyID' = 'new')]
# SurveyID Species
# 1: 1 GRSH
# 2: 2 <NA>
# 3: 3 RAZO
# 4: 3 RAZO