我有一个数据集如下:
state substance sample.result
1 <NA> MAXIMUM NORMALIZED DP/DT 8.5
2 <NA> Moisture Content 11
3 OH Lead, Inorganic (as Pb) 0.0485974
4 OH Lead, Inorganic (as Pb) 0.0292245
5 OH Lead, Inorganic (as Pb) 0.0620832
6 OH Lead, Inorganic (as Pb) 0
但是sample.result属于字符类型,我想知道如果我使用以下代码进行子集将会发生什么:
health = subset(data, sample.result >0)
这会自动将字符值转换为适当的数值吗?
答案 0 :(得分:2)
强迫与你的希望相反。强迫性格&#34;发生并且词汇顺序与操作系统有关,因此建议的比较结果将取决于是否&#34; - &#34;是在#34; 0&#34;之前或之后在你的机器上。
请参阅:https://stat.ethz.ch/R-manual/R-devel/library/base/html/Comparison.html
答案 1 :(得分:1)
这取决于列的类。如果sample.result
列是一个因素,则无效。
上述注释似乎表明R是否将“-1.5”评估为大于或小于零存在一些模糊性,因此如果是类的话,您应该避免在列上使用>
character
。
如果该列属于numeric
类,则可以。
您可以使用class(data$sample.result)
然而,最好使用以下方法将sample.result显式转换为数字:
health = subset(data, as.numeric(as.character(sample.result)))
额外的as.character
确保如果它是previousl.y的一个因素,那么它就会被正确处理(尝试将因子转换为只有as.numeric
的数字以查看原因)。