我有一个这样的数据框:
ID <- c("A","B","C","D","E","F","G","H","I")
Measurement <- c('Length',NA,NA,NA,'Length','Length',NA,NA,'Length')
PT <- c(27,35,38,22,35,39,7,15,33)
df <- data.frame(ID,Measurement,PT)
Limit <- 25
我正在尝试使用限制作为条件对此数据框进行子集,以便排除任何具有(“PT”值&gt; limit AND Measuremnent = NA)的数据。
注意:但是我仍然希望包含任何有PT&gt;的数据。限制,但其中包含测量类型。在这种情况下,它的长度。
我试图这样做但我收到错误
df3 <- !subset(df3,df3$PT >= Limit & df3$Measurement == '')
我想要的输出是
ID Measurement PT
1 A Length 27
2 D <NA> 22
3 E Length 35
4 F Length 39
5 G <NA> 7
6 H <NA> 15
7 I Length 33
我知道这很简单,但我错过了某处的逻辑。有人能指出我正确的方向吗?
答案 0 :(得分:1)
我们也可以
df[with(df, !(PT> Limit & is.na(Measurement))),]
# ID Measurement PT
#1 A Length 27
#4 D <NA> 22
#5 E Length 35
#6 F Length 39
#7 G <NA> 7
#8 H <NA> 15
#9 I Length 33
或使用dplyr
library(dplyr)
df %>%
filter(!(PT > Limit & is.na(Measurement)))