如果在R中的另一个列表中找到id,则删除数据帧的行
我有一个数据框如果在R中的另一个列表中找到id,则删除数据帧的行,r,R,我有一个数据框final,其中每个观察值在名为final$workerId 如果在另一个名为omit 这是我试过的 final <- read.csv("the data.csv") omit <- c("A3E9N7HDRLT8KV","A39HQTITNY9TVJ","A272A0JGRTBFCR","A1QPHQ1C27ZFI7") final <- final[,-final$workerId %in% omit] final%in%返回一个逻辑向量。逻辑向量的反面可
final
,其中每个观察值在名为final$workerId
如果在另一个名为omit
这是我试过的
final <- read.csv("the data.csv")
omit <- c("A3E9N7HDRLT8KV","A39HQTITNY9TVJ","A272A0JGRTBFCR","A1QPHQ1C27ZFI7")
final <- final[,-final$workerId %in% omit]
final%in%
返回一个逻辑向量。逻辑向量的反面可以通过找到
,而不是-
,因此final[!final$workerId%在%omit中,]
是您想要的
您还可以使用which
将逻辑转换为整数索引向量,然后可以像这样使用-
:final[-which(final$workerId%在%省略中),]
,但第一种方法似乎更简单
例如:
mtcars[!mtcars$cyl %in% c(4, 6), ]
mpg cyl disp hp drat wt qsec vs am gear carb
Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2
Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4
Merc 450SE 16.4 8 275.8 180 3.07 4.070 17.40 0 0 3 3
Merc 450SL 17.3 8 275.8 180 3.07 3.730 17.60 0 0 3 3
Merc 450SLC 15.2 8 275.8 180 3.07 3.780 18.00 0 0 3 3
Cadillac Fleetwood 10.4 8 472.0 205 2.93 5.250 17.98 0 0 3 4
Lincoln Continental 10.4 8 460.0 215 3.00 5.424 17.82 0 0 3 4
Chrysler Imperial 14.7 8 440.0 230 3.23 5.345 17.42 0 0 3 4
Dodge Challenger 15.5 8 318.0 150 2.76 3.520 16.87 0 0 3 2
AMC Javelin 15.2 8 304.0 150 3.15 3.435 17.30 0 0 3 2
Camaro Z28 13.3 8 350.0 245 3.73 3.840 15.41 0 0 3 4
Pontiac Firebird 19.2 8 400.0 175 3.08 3.845 17.05 0 0 3 2
Ford Pantera L 15.8 8 351.0 264 4.22 3.170 14.50 0 1 5 4
Maserati Bora 15.0 8 301.0 335 3.54 3.570 14.60 0 1 5 8
这里有一个dplyr解决方案,可能会引起人们的兴趣。语法的逻辑类似于您在问题中编写的基本R尝试
omit <- c("A3E9N7HDRLT8KV","A39HQTITNY9TVJ","A272A0JGRTBFCR","A1QPHQ1C27ZFI7")
final <- filter(final, !(workerId %in% omit))
在%
中忽略%返回一个逻辑向量。逻辑向量的反面可以通过找到
,而不是-
,因此final[,!final$workerId%在%omit中]
是您想要的。您还可以使用将逻辑转换为整数索引向量,然后您可以这样使用-
:final[,-which(final$workerId%in%omit)]
,但第一种方法似乎更简单。第一种解决方案似乎不起作用,但哪种解决方案效果很好。非常感谢。像这样final@Parfait括号是不需要的——这是我从问题中复制的一个拼写错误,在这个问题中,用户试图对列而不是行进行子集划分。将逗号移到逻辑语句之后,它就会正常工作,例如,mtcars[!mtcars$cyl%在%c(4,6)中]
。注意,在我的版本中,逗号也应该被移动。哈哈哇。回顾我第一次开始使用R时的老问题:这绝对是我现在使用的最好的答案。