根据另一列过滤数据框的列

古斯塔沃

我需要根据每个otu出现的样本数过滤下面的数据框

   samples otu1 otu2 otu3 otu4 otu5
1        a    2    1    0    0    3
2        b    2    4    1    4    3
3        c    0    0    0    1    0
4        d    0    0    1    4    4
5        e    1    2    0    2    3
6        f    1    1    2    4    2
7        g    1    0    0    4    3
8        h    0    0    2    0    4
9        i    1    2    2    1    6
10       j    0    0    2    3    4

例如,要仅保留otu出现在 >=80% 样本中s,输出将类似于:

   samples otu4 otu5
1        a    0    3
2        b    4    3
3        c    1    0
4        d    4    4
5        e    2    3
6        f    4    2
7        g    4    3
8        h    0    4
9        i    1    6
10       j    3    4
阿克伦

我们可以使用 select

library(dplyr)
df1 %>% 
    select(samples, where(~ is.numeric(.) && mean(. != 0) >= 0.8))

-输出

#     samples otu4 otu5
#1        a    0    3
#2        b    4    3
#3        c    1    0
#4        d    4    4
#5        e    2    3
#6        f    4    2
#7        g    4    3
#8        h    0    4
#9        i    1    6
#10       j    3    4

或者,如果我们使用的是旧dplyr版本,请使用select_if

df1 %>%
   select_if(~ is.character(.)|is.numeric(.) && mean(. != 0) >= 0.8)

数据

df1 <- structure(list(samples = c("a", "b", "c", "d", "e", "f", "g", 
"h", "i", "j"), otu1 = c(2L, 2L, 0L, 0L, 1L, 1L, 1L, 0L, 1L, 
0L), otu2 = c(1L, 4L, 0L, 0L, 2L, 1L, 0L, 0L, 2L, 0L), otu3 = c(0L, 
1L, 0L, 1L, 0L, 2L, 0L, 2L, 2L, 2L), otu4 = c(0L, 4L, 1L, 4L, 
2L, 4L, 4L, 0L, 1L, 3L), otu5 = c(3L, 3L, 0L, 4L, 3L, 2L, 3L, 
4L, 6L, 4L)), class = "data.frame", row.names = c("1", "2", "3", 
"4", "5", "6", "7", "8", "9", "10"))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据另一列的条件过滤数据框

如何过滤数据框并根据熊猫数据框中的另一列获取记录总数?

根据一列数据框过滤数据行

根据另一列更新pyspark数据框列

根据特定月份的值过滤熊猫数据框,并以另一列为条件

在数据框中添加另一列以根据日期过滤出每月的星期

熊猫根据日期范围和另一列过滤数据框

根据另一列的值按分位数过滤熊猫数据框

根据一列的最小值过滤数据框

过滤基于另一列的熊猫数据框

根据另一列合并数据框中的行

根据同一数据集中另一列中的值过滤数据绑定组合框

根据另一列具有输入数据框的值替换一列的值

根据熊猫中数据框的另一列的值添加一列

根据另一列在数据框中删除一列

根据数据框中另一列的值添加一列

Spark数据框:根据另一列的值提取一列

Pyspark数据框:根据另一列的值提取一列

根据另一列 R 的条件在数据框中提取一列

按另一数据框的一列过滤数据框

根据同一数据框的另一列绘制一个列

如何使用另一列中的值过滤列数据框中的数据?

根据Scala中的另一列聚合数据框列中的数据

如何根据一列对数据框进行分组并根据另一列进行转置

根据熊猫数据框中另一列的最后一个值填充列

根据另一列中的值对pandas数据框中的列进行归一化

根据python中的另一列过滤列列表

根据 R 中数据帧中另一列的条件过滤数据帧

根据另一个数据框的列值过滤数据框