首页 > 解决方案 > 根据条件删除行

问题描述

  my_df <- tibble(
    b1 = c(2, 1, 1, 2, 2, 2, 1, 1, 2), 
    b2 = c(NA, 4, 6, 2, 6, 6, 1, 1, 7), 
    b3 = c(5, 9, 8, NA, 2, 3, 9, 5, NA), 
    b4 = c(NA, 6, NA, 10, 12, 8, 3, 6, 2),
    b5 = c(2, 12, 1, 7, 8, 5, 5, 6, NA),
    b6 = c(9, 2, 4, 6, 7, 6, 6, 7, 9),
    b7 = c(1, 3, 7, 7, 4, 2, 2, 9, 5),
    b8 = c(NA, 8, 4, 5, 1, 4, 1, 3, 6),
    b9 = c(4, 5, NA, 9, 5, 1, 1, 2, NA),
    b10 = c(14, 3, NA, 2, 2, 2, 3, NA, 5))

 

我有一个这样的df,如果b1 = 1,我想告诉R删除b10中的所有'3'或'NA'。我已经尝试过这个,但它似乎保留了'3'和'NA'而不是删除它们;

new_df <- my_df %>% filter(is.na(b10) | b10 == 3  | b1==1 & b10 ==NA) 

标签: r

解决方案


这应该可以解决问题:

library(dplyr)
my_df %>% 
  filter(!(b1 == 1 & (is.na(b10) | b10 == 3)))

编辑:假设您要删除条件满足的行


推荐阅读