R中2个子集数据方法的不同结果

时间:2017-05-04 12:26:03

标签: r subset

我正在下载我的数据,并且我得到以下代码的不同结果:

               for(var r of this.random)
                if(r != this.y){
                    this.random.push(this.y); 
                }; 

subset(df, x==1) df[df$x==1,] 的类型为x

我做错了吗? 提前谢谢

1 个答案:

答案 0 :(得分:5)

如果没有示例数据,很难说出您的问题是什么。但是,我的预感是,以下内容可能解释了您的问题:

df <- data.frame(quantity=c(1:3, NA), item=c("Coffee", "Americano", "Espresso", "Decaf"))
df
quantity      item
       1    Coffee
       2 Americano
       3  Espresso
      NA     Decaf

[

的子集
df[df$quantity == 2,]
 quantity      item
        2 Americano
       NA      <NA>

现在让subset的子集:

subset(df, quantity == 2)
quantity      item
       2 Americano

我们发现子设置输出存在差异,具体取决于NA值的处理方式。我认为如下:使用subset,您明确声明您希望条件可验证为true的子集。 df$quantity==2生成一个true / false语句的向量,但如果缺少数量,则无法分配TRUEFALSE。这就是为什么我们在结尾处得到以下输出为NA的原因:

df$quantity==2
[1] FALSE  TRUE FALSE    NA

函数[使用此向量,但不理解如何处理NA,这就是为什么我们得NA Decaf而不是NA <NA>[如果您更喜欢使用df[which(df$quantity == 2),] quantity item 2 Americano ,则可以使用以下代码:

df$quantity == 2

这将逻辑条件{{1}}转换为向量或行数,其中逻辑条件是&#34;可验证的&#34;满意。