Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.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
R 选择具有最少NA值的列_R_Select_Dplyr_Na - Fatal编程技术网

R 选择具有最少NA值的列

R 选择具有最少NA值的列,r,select,dplyr,na,R,Select,Dplyr,Na,我正在使用一个生成两个输出列的数据帧。一列始终比另一列具有更多NA值,但不是以任何可预测的方式。我的问题是,如何使用dplyr选择NA值最少的列。我正在考虑使用which.min来决定,但不确定如何将其组合在一起。请注意,这两列都包含na值,我想选择这些值中最少的一列。您可以使用dplyr和purr执行此操作 在which.min中,首先使用map(可以是data.frame中的任意多个列。keep部分仅返回实际具有NA的列。which.min返回命名向量,我们取其名称并将其提供给dplyr的s

我正在使用一个生成两个输出列的数据帧。一列始终比另一列具有更多NA值,但不是以任何可预测的方式。我的问题是,如何使用dplyr选择NA值最少的列。我正在考虑使用which.min来决定,但不确定如何将其组合在一起。请注意,这两列都包含na值,我想选择这些值中最少的一列。

您可以使用
dplyr
purr
执行此操作

which.min
中,首先使用
map
(可以是data.frame中的任意多个列。
keep
部分仅返回实际具有NA的列。
which.min
返回命名向量,我们取其名称并将其提供给
dplyr
select
函数

我已经略述了代码,这样您就可以很容易地看到哪些部分属于哪里

library(purrr)
library(dplyr)


df %>% select(names(which.min(df %>% 
                                map(function(x) sum(is.na(x))) %>% 
                                keep(~ .x > 0)
                             )
                    )
              )
库(dplyr)
df%
总结所有(funs(sum(is.na)())#na计数
#>#A tible:1 x 2
#>a b
#>    
#> 1     4     8
df%>%#答案
选择_if(funs)(哪一个.min(sum(is.na)())))
#>#tibble:24 x 1
#>a
#>    
#>1 NA
#>  2     1
#>  3     2
#>  4     3
#>  5     4
#>  6     5
#>7 NA
#>  8     1
#>  9     2
#> 10     3
#>#…还有14行
由(v0.2.0)于2018年5月25日创建