从csv文件中删除零

时间:2020-06-06 13:40:08

标签: r dataframe

我正在处理表达式数据,并且有一个像这样的文件: data.png

我想知道如何删除值为0的行。如果在任何行中某些值为0,而其他值不为零,我想保留该行。我尝试使用:

> df[apply(df[,-1], 1, function(x) !all(x==0)),]
Error in df[, -1] : incorrect number of dimensions

有人可以帮助我了解这里的问题吗。 问候。

1 个答案:

答案 0 :(得分:0)

对于带有带有标签的前导列的数据框,您可以执行以下操作。首先是此示例中使用的测试数据:

> test.df <- data.frame(genes=c("a","b","c","d","e","f","g"), col2=c(1,1,1,0,1,0,1), col3=c(4,3,6,0,1,NA,1), col4=c(9,8,7,0,5,NA,3))
> test.df
  genes col2 col3 col4
1     a    1    4    9
2     b    1    3    8
3     c    1    6    7
4     d    0    0    0
5     e    1    1    5
6     f    0   NA   NA
7     g    1    1    3

目标是删除第4行和第6行。对所有行执行apply,而不对数据帧的第一列([,-1])进行行操作,然后删除任何零或NA:

> test.df[apply(test.df[,-1], 1, function(x) any(x != 0 || is.na(x))), ]
  genes col2 col3 col4
1     a    1    4    9
2     b    1    3    8
3     c    1    6    7
5     e    1    1    5
7     g    1    1    3

这仅留下您感兴趣的行。如果您的资产净值是分开的,只需删除|| is.na(x)部分。

(这与How to remove rows with all zeros without using rowSums in R?的第二个答案几乎相同,但列的不同之处在于,因此这里的答案是唯一的。]