首页 > 解决方案 > 将具有 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")

标签: r

解决方案


我们可以使用rowSumsbase R

df1[rowSums(is.na(df1[-1])) < ncol(df1)-1,]
#   id  stock   bill
#1  1 stock2 stock3
#2  2   <NA>  bill2

或使用filter_atfromdplyr

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(.)))

注意:当有许多列要比较时,这也可以工作。


推荐阅读