用乘法逻辑运算符R子集数据帧

问题描述

我有一个数据框,我想根据2个特定列中的值将其细分为3个新数据框。

数据帧数据如下

structure(list(Analyte = c("Fe","SiO2","Al2O3","Mn","P"),Units = c("%","%","%"),Value = c("65.64","1.131","0.845","0.02","0.122"),`1 SD` = c("0.218585","0.037177","0.022415","0.002315","0.001914"),`1 SD within Lab` = c("0.171935","0.022832","0.01248","0.000866","0.001005"),Interval = c("0.113","0.023","0.014","0.002","0.001"),`95% Lower CI` = c("65.5275075004927","1.10799350503001","0.831047973875986","0.017751684702168","0.120781663382338"),`95% Upper CI` = c("65.752959166174","1.15385316163666","0.859832026124014","0.0212631301126469","0.123288336617662"),`Coeff of Var` = c("0.3","3.3","2.7","11.6","1.6"),`Number of Labs` = c("10","10","9","10"),`Number of Analysis` = c("60","60","54","60"
    )),row.names = c(NA,5L),class = "data.frame")

我希望我的三个表分别为“已认证”,“临时”和“信息性”

“ Var系数”> = 10且实验室数量> = 5时,获得认证表 临时表格是“变量的系数”在10到20之间或“实验室数”在 3之间的情况 信息表本质上是其他所有内容,但我已制定规则

我有3小段代码,如下所示,但是它们要么没有产生结果,要么是错误的结果

Certified <- subset(df,'Coeff of Var' <= 10 &
                    'Number of Labs' >= 5)

Provisional <- subset(df,'Coeff of Var' < 20 & 
                          'Coeff of Var' > 10 |
                          'Number of Labs' < 5)


informational <- subset(df,'Coeff of Var' > 20 | 
                        'Number of Labs' < 3)

我尝试用'&&'代替'&',但是没有成功。 我在哪里弄错了?

解决方法

数据框中的所有数字均为字符类型。我们可以使用type.convert将其更改为各自的类型。

此外,不建议在列名中使用空格,但是如果有的话,可以用反引号而不是引号来引用它们。如果我们用引号引起来,则是将字符串值与数字进行比较。所以尝试:

df <- type.convert(df,as.is = TRUE)

Certified <- subset(df,`Coeff of Var` <= 10 & `Number of Labs` >= 5)
Provisional <- subset(df,`Coeff of Var` < 20 & `Coeff of Var` > 10 | `Number of Labs` < 5)
Informational <- subset(df,`Coeff of Var` > 20 | `Number of Labs` < 3)