R 基于两个向量集清除不需要的行的数据帧
寻找一种从数据帧中清除行的方法,该数据帧的值与两组向量不匹配,其中一组应用于column1,第二组应用于column2。我希望这是一个或两个(即,如果x行有一个col1匹配,但没有col2,则x行不被清除)。这就是我想要的,但代码不起作用:R 基于两个向量集清除不需要的行的数据帧,r,R,寻找一种从数据帧中清除行的方法,该数据帧的值与两组向量不匹配,其中一组应用于column1,第二组应用于column2。我希望这是一个或两个(即,如果x行有一个col1匹配,但没有col2,则x行不被清除)。这就是我想要的,但代码不起作用: purged_frame <- original_frame[(original_frame$Column1 %in% vectorsetforcol1 | original_frame$Column2 %in% vectorsetforcol2),]
purged_frame <- original_frame[(original_frame$Column1 %in% vectorsetforcol1 | original_frame$Column2 %in% vectorsetforcol2),]
u框架最好分享一个可重复的例子,()
使用基本Rmtcars
和data(mtcars)
中可用的数据集,创建两个条件向量
vectorsetforcol1<- mtcars$mpg[mtcars$mpg<15]
vectorsetforcol2<-unique(mtcars$carb[mtcars$carb==2])
输出条件2:(carb==2)
组合条件1和条件2
> mtcars[mtcars$carb %in% vectorsetforcol2,]
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
Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2
Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2
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
Pontiac Firebird 19.2 8 400.0 175 3.08 3.845 17.05 0 0 3 2
Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2
Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2
Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2
>
> cond.df<-mtcars[(mtcars$mpg %in% vectorsetforcol1 | mtcars$carb %in% vectorsetforcol2 ),]
> cond.df
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 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2
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
Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2
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
Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2
Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2
Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2
>
>cond.df cond.df
mpg气缸显示hp drat wt qsec与am齿轮carb
大黄蜂运动约18.7 8 360.0 175 3.15 3.440 17.02 0 3 2
除尘器360 14.3 8 360.0 245 3.21 3.570 15.84 0 3 4
Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2
凯迪拉克Fleetwood 10.4 8 472.0 205 2.93 5.250 17.98 0 3 4
林肯大陆10.4 8 460.0 215 3.00 5.424 17.82 0 0 3 4
克莱斯勒帝国14.7 8 440.0 230 3.23 5.345 17.42 0 3 4
本田思域30.4 4 75.7 52 4.93 1.615 18.52 1 4 2
道奇挑战者15.5 8 318.0 150 2.76 3.520 16.87 0 0 3 2
AMC标枪15.2 8 304.0 150 3.15 3.435 17.30 0 3 2
卡马罗Z28 13.3 8 350.0 245 3.73 3.840 15.41 0 3 4
庞蒂亚克火鸟19.28400.01753.083.84517.050302
保时捷914-2 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2
莲花欧罗巴30.4 4 95.1 113 3.77 1.513 16.90 1 5 2
沃尔沃142E 21.4 4 121.0 109 4.11 2.780 18.60 1 4 2
>
试验条件1:(非(mpg<15))
违反条件1的情况之所以存在,是因为它们遵循条件2(carb==2)
>cond.test.col1 cond.test.col1
mpg气缸显示hp drat wt qsec与am齿轮carb
大黄蜂运动约18.7 8 360.0 175 3.15 3.440 17.02 0 3 2
Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2
本田思域30.4 4 75.7 52 4.93 1.615 18.52 1 4 2
道奇挑战者15.5 8 318.0 150 2.76 3.520 16.87 0 0 3 2
AMC标枪15.2 8 304.0 150 3.15 3.435 17.30 0 3 2
庞蒂亚克火鸟19.28400.01753.083.84517.050302
保时捷914-2 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2
莲花欧罗巴30.4 4 95.1 113 3.77 1.513 16.90 1 5 2
沃尔沃142E 21.4 4 121.0 109 4.11 2.780 18.60 1 4 2
>
试验条件2:(非(carb==2))
违反条件2的情况之所以存在,是因为它们遵循条件1(mpg cond.test.col2 cond.test.col2
mpg气缸显示hp drat wt qsec与am齿轮carb
除尘器360 14.3 8 360 245 3.21 3.570 15.84 0 3 4
凯迪拉克Fleetwood 10.4 8 472 205 2.93 5.250 17.98 0 3 4
林肯大陆10.4 8 460 215 3.00 5.424 17.82 0 3 4
克莱斯勒帝国14.7 8 440 230 3.23 5.345 17.42 0 3 4
卡马罗Z28 13.3 8 350 245 3.73 3.840 15.41 0 3 4
这与您的方法相同,如果您提供了一个工作示例,有人可能会指出问题…在我的上述问题中,编辑可能重复-我需要一个或两个情况。不是重复(或与我正在寻找的解决方案不明显的链接),所以我仍然在寻找解决方案-感谢那些愿意提供帮助的人。这正是我一直在寻找的。我认为我的原始代码存在语法问题,显然是逻辑问题-感谢你指出了这一点(以及关于可再现性的观点)。
> cond.df<-mtcars[(mtcars$mpg %in% vectorsetforcol1 | mtcars$carb %in% vectorsetforcol2 ),]
> cond.df
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 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2
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
Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2
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
Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2
Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2
Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2
>
> cond.test.col1<-cond.df[!cond.df$mpg %in% vectorsetforcol1, ]
> cond.test.col1
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
Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2
Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2
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
Pontiac Firebird 19.2 8 400.0 175 3.08 3.845 17.05 0 0 3 2
Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2
Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2
Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2
>
> cond.test.col2<-cond.df[!cond.df$carb %in% vectorsetforcol2, ]
> cond.test.col2
mpg cyl disp hp drat wt qsec vs am gear carb
Duster 360 14.3 8 360 245 3.21 3.570 15.84 0 0 3 4
Cadillac Fleetwood 10.4 8 472 205 2.93 5.250 17.98 0 0 3 4
Lincoln Continental 10.4 8 460 215 3.00 5.424 17.82 0 0 3 4
Chrysler Imperial 14.7 8 440 230 3.23 5.345 17.42 0 0 3 4
Camaro Z28 13.3 8 350 245 3.73 3.840 15.41 0 0 3 4