r - 将具有 NA 的行删除到特定的列和条件中
问题描述
data.frame(id = c(1,2,3,4), stock = c("stock2", NA, NA, NA), bill = c("stock3", "bill2", NA, NA)
我想删除两列(股票,账单)缺失值的行
示例输出
data.frame(id = c(1,2), stock = c("stock2", NA), bill = c("stock3", "bill2")
解决方案
我们可以使用rowSums
在base R
df1[rowSums(is.na(df1[-1])) < ncol(df1)-1,]
# id stock bill
#1 1 stock2 stock3
#2 2 <NA> bill2
或使用filter_at
fromdplyr
library(dplyr)
df1 %>%
filter_at(-1, any_vars(!is.na(.)))
# id stock bill
#1 1 stock2 stock3
#2 2 <NA> bill2
我们还可以在其中指定列名vars
df1 %>%
filter_at(vars(stock, bill), any_vars(!is.na(.)))
注意:当有许多列要比较时,这也可以工作。
推荐阅读
- r - 尽管列名的格式正确,但出现意外符号
- java - 为包中的每个方法分配一个编号
- flutter - Flutter Dart - 列表
'不能分配给参数类型'聊天' - python - 如何取回默认的 Python?
- mongodb - MongoDB 添加以变量值命名的新字段
- java - 如何让 ProgressDialog 背景覆盖整个屏幕?
- c# - Github Actions 运行 Nunit Selenium 测试问题
- performance - 自定义 Tensorflow 数据集在批处理后非常慢。dataset.take() 处理时间太长
- java - 如何返回一个常量值,而不是每次都创建一个新对象
- asp.net - 一个视图中的多个模型连接类的模型