r - 选择列,不包括一些都是 NA
问题描述
假设我有这个数据框
df <- data.frame(keep = c(1, NA, 2),
also_want = c(NA, NA, NA),
maybe = c(1, 2, NA),
maybe_2 = c(NA, NA, NA))
编辑:在实际的数据框中,我想保留很多列,因此将它们全部拼写出来是不可行的。这些列是所有不以 开头的列maybe
。maybe
相反,这些列确实有一个共同的命名maybe
,例如maybe_1
等,可以与grep
or一起使用stringr::str_detect
我想选择keep
, 和also_want
。我还想要任何maybe
具有以下值的列NA
desired_df
keep also_want maybe
1 1 NA 1
2 NA NA 2
3 2 NA NA
我可以select_if
用来获取所有具有非NA
值的列,但后来我输了also_want
library(dplyr)
df %>%
select_if(~sum(!is.na(.)) > 0)
keep maybe
1 1 1
2 NA 2
3 2 NA
想法?
解决方案
使用dplyr
1.0.0,您可以where
在语句中使用该函数select
来测试您的变量必须满足的条件,但首先您指定您还想保留的变量。
编辑
我插入了一个条件,即只有"maybe"
变量必须包含除NA
;之外的值。之前,我们选择不以 . 开头的每一列"maybe"
。
df %>%
select(!starts_with("maybe"), starts_with("maybe") & where(~sum(!is.na(.)) > 0))
输出
# keep also_want maybe
# 1 1 NA 1
# 2 NA NA 2
# 3 2 NA NA
推荐阅读
- java - 在 Java 中使用 Selenium 3 定位城市的纬度和经度
- reactjs - React 本机应用程序无法通过 nginx 代理服务器连接到 docker-compose
- forms - 表单提交方法不适用于 vuelidate
- iis - IIS 中的 SQL 错误消息未显示出现 500 错误
- flutter - ListView().toList .map - 在 ListView 中添加单独的小部件(未映射)
- iis - IIS 和 ServerSideIncludes
- c# - 如何将属性添加到记录的主构造函数?
- android-jetpack-compose - 如何访问jetpack compose中的任何图标?
- c - 如何使用omp flush(如何解释openmp api中关于flush模型的注释)
- json - 如何使用 settings.json 更改活动栏中图标的颜色