您正在使用基因表达矩阵,片段计数来计算差异表达的基因。我想知道如何删除值为0的行。然后我的数据集将是紧凑的,并且我将使用此矩阵为下游分析提供更少的虚假结果。
输入
gene ZPT.1 ZPT.0 ZPT.2 ZPT.3 PDGT.1 PDGT.0
XLOC_000001 3516 626 1277 770 4309 9030
XLOC_000002 342 82 185 72 835 1095
XLOC_000003 2000 361 867 438 454 687
XLOC_000004 143 30 67 37 90 236
XLOC_000005 0 0 0 0 0 0
XLOC_000006 0 0 0 0 0 0
XLOC_000007 0 0 0 0 1 3
XLOC_000008 0 0 0 0 0 0
XLOC_000009 0 0 0 0 0 0
XLOC_000010 7 1 5 3 0 1
XLOC_000011 63 10 19 15 92 228
期望的输出
gene ZPT.1 ZPT.0 ZPT.2 ZPT.3 PDGT.1 PDGT.0
XLOC_000001 3516 626 1277 770 4309 9030
XLOC_000002 342 82 185 72 835 1095
XLOC_000003 2000 361 867 438 454 687
XLOC_000004 143 30 67 37 90 236
XLOC_000007 0 0 0 0 1 3
XLOC_000010 7 1 5 3 0 1
XLOC_000011 63 10 19 15 92 228
截至目前,我只想删除那些所有frag count列为0的行,如果在任何行中某些值为0而其他值为非零我想保持该行不变,因为您可以看到上面的示例。
请让我知道如何做到这一点。
答案 0 :(得分:12)
df[apply(df[,-1], 1, function(x) !all(x==0)),]
答案 1 :(得分:0)
在 tidyverse 中执行此操作的许多选项已在此处发布:How to remove rows where all columns are zero using dplyr pipe
我的首选是使用 rowwise()
library(tidyverse)
df <- df %>%
rowwise() %>%
filter(sum(c(col1,col2,col3)) != 0)