Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.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
使用逻辑选择时,为什么NAs位于新创建的data.frame中?_R_Dataframe - Fatal编程技术网

使用逻辑选择时,为什么NAs位于新创建的data.frame中?

使用逻辑选择时,为什么NAs位于新创建的data.frame中?,r,dataframe,R,Dataframe,我试图在R data.frame中去掉NAs。在本例中,我试图创建一个新的df,它只包含集群为“texas”的行 > newdf <- df[df$cluster == "texas",] > summary(newdf$cluster) texas oklahoma NA's 510 0 719 >newdf摘要(newdf$cluster) 德克萨斯州俄克拉荷马州 510

我试图在R data.frame中去掉
NAs
。在本例中,我试图创建一个新的df,它只包含集群为“texas”的行

> newdf <- df[df$cluster == "texas",]
> summary(newdf$cluster)
     texas    oklahoma            NA's 
      510           0             719 
>newdf摘要(newdf$cluster)
德克萨斯州俄克拉荷马州
510           0             719 
我已经找到了摆脱NAs的地址,但在本例中,我只选择了那些“集群”列等于“德克萨斯”的地址——NAs是如何实现的


有没有更好的方法来做我想做的事情?

正如@MrFlick在上文中所建议的那样,
NA
值的处理方式会略有不同,具体取决于索引方式

测试数据:

dd <- data.frame(cluster=c("oklahoma","texas",NA))
原则上,您可以使用
dd$cluster==“oklahoma”&!is.na(dd$cluster)
作为您的标准-因为
FALSE&na
is
FALSE
-但这相当尴尬。(因为我们已经指定了一个单列数据帧,没有说
drop=FALSE
,所以结果在汇总之前会简化为一个向量。)

  • 子集:尽管它是,但是
    子集
    有一个方便的属性,即它在标准计算结果为
    NA
    的地方删除值。(此外,
    subset
    始终返回数据帧,即使结果只有一列宽。)
  • 哪个
  • which()
    只返回
    TRUE
    值的索引,不返回
    NA
    值的索引:

    which(dd$cluster=="oklahoma")
    ## [1] 1
    summary(dd[which(dd$cluster=="oklahoma"),])
    ## oklahoma    texas 
    ##        1        0 
    
    您可以执行
    df[which(df$cluster==“texas”),]
    summary(subset(dd,cluster=="oklahoma"))
    ##      cluster 
    ##  oklahoma:1  
    ##  texas   :0  
    
    which(dd$cluster=="oklahoma")
    ## [1] 1
    summary(dd[which(dd$cluster=="oklahoma"),])
    ## oklahoma    texas 
    ##        1        0