如何从数据框中删除在R中的单独数据框中等于唯一值的所有行?

如何从数据框中删除在R中的单独数据框中等于唯一值的所有行?,r,dataframe,R,Dataframe,我有一个数据帧df1,它缺少不同站点的值(NA)。我已经确定了每个站点的最大NA差距,现在我想从df1数据框中删除这些站点,我如何有效地做到这一点 library(data.table) library(dplyr) df1 <- data.frame(matrix(ncol = 3, nrow = 20)) x <- c("siteID", "Date", "Wtemp") colnames(df1) <- x d

我有一个数据帧
df1
,它缺少不同站点的值(
NA
)。我已经确定了每个站点的最大
NA
差距,现在我想从
df1
数据框中删除这些站点,我如何有效地做到这一点

library(data.table)
library(dplyr)

df1 <- data.frame(matrix(ncol = 3, nrow = 20))
x <- c("siteID", "Date", "Wtemp")
colnames(df1) <- x
df1$siteID <- c(101,101,101,101,101,
                102,102,102,102,102,
                103,103,103,103,103,
                104,104,104,104,104)
df1$Date <- rep(seq(from = as.Date("2020-01-01"), to = as.Date("2020-01-05"), by = 1),4)  
df1$Wtemp <- c(10,NA,NA,NA,15,
               20,NA,NA,10,16,
               2,4,6,8,10,
               12,14,16,18,20)

MaxGap_Wtemp <- df1 %>%
  group_by(siteID) %>%
  summarise(MaxGap = with(rle(is.na(Wtemp)),
                          max(0, max(lengths[values]))), .groups = 'drop')

MaxGap_Wtemp$Frac_missing <- round(((MaxGap_Wtemp$MaxGap/5)*100),digits=2)

remove_sites <- MaxGap_Wtemp[MaxGap_Wtemp$Frac_missing > 30,]

zz <- unique(remove_sites$siteID)
但是,对于需要删除的站点,我想引用具有唯一的
siteID
zz
,因为它对于具有长siteID值的大型数据集更有效。我曾尝试使用下面的代码进行此操作,但输出不正确(请参阅
dat的输出,了解输出的外观)


dat2而不是
=
,我们需要%
中的
%和否定(
),因为
=
只能在
长度为1或与要比较的列的长度相同时工作,因为它正在进行元素比较

df[!(df1$siteID %in% zz),]
dat2 <- df1[!(df1$siteID == zz),]
df[!(df1$siteID %in% zz),]