如何从数据框中删除在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),]