我有以下建议:
library(tidyverse)
df <- tibble::tribble(
~gene, ~colB, ~colC,
"a", 1, 2,
"b", 2, 3,
"c", 3, 4,
"d", 1, 1
)
df
#> # A tibble: 4 x 3
#> gene colB colC
#> <chr> <dbl> <dbl>
#> 1 a 1 2
#> 2 b 2 3
#> 3 c 3 4
#> 4 d 1 1
我想要做的是过滤gene
列之后的每一列,以寻找大于或等于2(〉= 2)的值。
gene, colB, colC
a NA 2
b 2 3
c 3 4
我怎样才能做到呢?
基因后面的列数实际上不止2。
4条答案
按热度按时间ut6juiuv1#
一个解决方案:从宽格式转换为长格式,这样你就可以只过滤一列,如果需要的话,在最后转换回宽格式。2注意这将丢弃没有值满足条件的基因。
tp5buhyn2#
即将发布的dplyr 0.6(现在可以从GitHub安装)有
filter_at
,它可以用来过滤任何值大于或等于2的行,然后na_if
可以类似地通过mutate_at
应用,因此或类似地,
其可以被转换为与DPLYR0.5:
都返回相同的内容。
7d7tgy0s3#
我们可以使用
data.table
或使用
melt/dcast
ejk8hzay4#
或者我们也可以尝试下面的代码
创建于2023年2月5日,使用reprex v2.0.2