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