首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何删除具有任何零值的行

如何删除具有任何零值的行
EN

Stack Overflow用户
提问于 2012-04-02 21:48:26
回答 12查看 198.3K关注 0票数 35

我有一个问题要解决,如何删除R中具有零值的行。换句话说,我可以使用na.omit()删除所有NA值,或者使用complete.cases()删除包含NA值的行。

有没有人知道如何删除R中零值的行?

例如:

之前的

|    DateTime      | Mac1  | Mac2  | Mac3  | Mac4  |
----------------------------------------------------
| 2011-04-02 06:00 | 20    | 0     | 20    | 20    |  
| 2011-04-02 06:05 | 21    | 21    | 21    | 21    |  
| 2011-04-02 06:10 | 22    | 22    | 22    | 22    |  
| 2011-04-02 06:15 | 23    | 23    | 0     | 23    |  
| 2011-04-02 06:20 | 24    | 24    | 24    | 24    | 
| 2011-04-02 06:25 | 0     | 25    | 25    | 0     | 

之后的

|    DateTime      | Mac1  | Mac2  | Mac3  | Mac4  |
----------------------------------------------------
| 2011-04-02 06:05 | 21    | 21    | 21    | 21    |  
| 2011-04-02 06:10 | 22    | 22    | 22    | 22    |  
| 2011-04-02 06:20 | 24    | 24    | 24    | 24    |  
EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2012-04-02 22:01:15

有几种不同的方法可以做到这一点。我更喜欢使用apply,因为它很容易扩展:

##Generate some data
dd = data.frame(a = 1:4, b= 1:0, c=0:3)

##Go through each row and determine if a value is zero
row_sub = apply(dd, 1, function(row) all(row !=0 ))
##Subset as usual
dd[row_sub,]
票数 45
EN

Stack Overflow用户

发布于 2018-05-15 04:50:11

我会做以下事情。

将零设置为NA。

 data[data==0] <- NA
 data

删除与NA关联的行。

 data2<-data[complete.cases(data),]
票数 10
EN

Stack Overflow用户

发布于 2012-04-02 22:05:51

我可能会同意Joran的建议,用NAs替换0,然后使用你提到的内置函数。如果您不能/不想这样做,一种方法是使用any()查找包含0的行并子集出这些行:

set.seed(42)
#Fake data
x <- data.frame(a = sample(0:2, 5, TRUE), b = sample(0:2, 5, TRUE))
> x
  a b
1 2 1
2 2 2
3 0 0
4 2 1
5 1 2
#Subset out any rows with a 0 in them
#Note the negation with ! around the apply function
x[!(apply(x, 1, function(y) any(y == 0))),]
  a b
1 2 1
2 2 2
4 2 1
5 1 2

要实现Joran的方法,下面这样的代码应该可以让您开始:

x[x==0] <- NA
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9977686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档