Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当某个因子在R中取特定值时,如何从data.frame中删除行_R_Factors - Fatal编程技术网

当某个因子在R中取特定值时,如何从data.frame中删除行

当某个因子在R中取特定值时,如何从data.frame中删除行,r,factors,R,Factors,我正在研究R中的一个汽车数据集。在这个数据集中,我有一个列名为fuel,它是类因子。因此,车辆总数分布在5种类型中。我想从该列中删除3种类型。例如: fuel: CNG : 40 Diesel :2133 Electric: 1 LPG : 23

我正在研究R中的一个汽车数据集。在这个数据集中,我有一个列名为
fuel
,它是类因子。因此,车辆总数分布在5种类型中。我想从该列中删除3种类型。例如:

fuel:  
 CNG     :  40                                                                                      
 Diesel  :2133   
 Electric:   1   
 LPG     :  23                          
 Petrol  :2120
如何通过一个命令删除系数级别
CNG
Electric
LPG

我已经尝试了以下方法,它是有效的,但我认为有更好的方法,比如使用一行命令

一,


car常见的解决方案是:

car[!(car$fuel %in% c("CNG", "Electric", "LPG")), ]
对于第二种解决方案,首先您需要使用
|
而不是
|
,因为您正在处理向量。其次,您需要说明要实现的逻辑测试,以便R了解:

car[!(car$fuel == "CNG" | car$fuel == "Electric" | car$fuel == "LPG"), ]
德摩根定律简化了:

要添加到解决方案中,您可以像这样使用
subset

#模拟数据
种子(2)
n 1未知1
#R> 3未知3
#R> 5气体5
#R> 6未知6
子集(汽车,!燃料百分比,单位为%c(“CNG”、“电动”、“液化石油气”))
#R> 燃料id
#R> 1未知1
#R> 3未知3
#R> 5气体5
#R> 6未知6
第二个版本失败,因为您使用的是
|
,而不是
|
。请参阅
帮助(“Logic”,package=“base”)
,特别是

&
&
表示逻辑and,而
|
|
表示逻辑OR。较短的形式执行元素级比较的方式与算术运算符的方式大致相同。较长的表单从左到右求值,只检查每个向量的第一个元素


数据集来自哪里?我使用了Kaggle的数据集,cardekho的车辆数据集。用它来学习R中的线性回归。谢谢你的回答,你能解释一下为什么我写的第二个命令不起作用吗?谢谢你的澄清!
car[!(car$fuel %in% c("CNG", "Electric", "LPG")), ]
car[!(car$fuel == "CNG" | car$fuel == "Electric" | car$fuel == "LPG"), ]
car[car$fuel != "CNG" & car$fuel != "Electric" & car$fuel != "LPG", ]