R 是 NA 的子集行,除非行包含特定字符串

R subset rows that are NAs except where row contains a specific string

我试图了解一个具体案例,在这个例子中,“C7”如何与其他人相对立。我正在做一个箱线图来形象化这一点。我在 R 中有一个数据框,包含以下列:

gene    case    log2fc      symbol
g1        c1    0.236291026 GG
g2        c2    0.073854478 GG
g3        c6    0.722921499 GG
g4        c7    0           GG
g5        c8    0.925691334 GG
g1        c3    0.412097286 HH
g2        c4    0.98899995  HH
g3        c5    0.494138717 HH
g4        c7    0.996523937 HH
g5        c9    0           HH

我想删除除此特定情况 C7 之外为 0 的行,然后绘制箱线图。 到目前为止,我设法将 0 转换为 NA 并从整个数据框中删除了行。但是,我不确定如何有条件地删除行。

df[df == 0] <- NA

在基数 R 中:

df[df$log2fc != 0 | df$case == 'c7',]

Tidyverse 解决方案:

df %>%
  filter(log2fc != 0 | case == 'c7')
df %>% 
  filter(log2fc!=0 | case=="c7")
 gene case     log2fc symbol
1   g1   c1 0.23629103     GG
2   g2   c2 0.07385448     GG
3   g3   c6 0.72292150     GG
4   g4   c7 0.00000000     GG
5   g5   c8 0.92569133     GG
6   g1   c3 0.41209729     HH
7   g2   c4 0.98899995     HH
8   g3   c5 0.49413872     HH
9   g4   c7 0.99652394     HH