首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >标识R中值等于0的行

标识R中值等于0的行
EN

Stack Overflow用户
提问于 2019-03-16 22:07:00
回答 1查看 3.5K关注 0票数 0

我试图找到一种方法来识别数据帧中的列,这些列的任何条目都等于0。如果该特定列的值等于0,我希望创建一个新的数据框架,而不包含零值的列。此外,我希望创建保留的列和删除的列的列表。

代码语言:javascript
复制
Example:

    dataframe1:

Column1       Column2     Column3     Column4
    .03           .05         .07         .08
    .01           .09         .22         .39
      0           .56         .88         .56

    dataframe2:

Column1       Column2     Column3     Column4
    .03           .05         .07         .08
    .01           .09         .22         .39
      0           .56         .88         .56

   retainedColumns = 2, 3, 4
   removedColumns = 1

我想这在dplyr中可以很容易做到。至于创建新的数据框架,我尝试代码(不断崩溃):

代码语言:javascript
复制
dataframe2<-dataframe1[!dataframe1 %in% 0, ] 

任何帮助都将不胜感激。

EN

Stack Overflow用户

回答已采纳

发布于 2019-03-16 22:12:49

你可以做下面的事。基本上,您是用colSums(df==0)对每列中的零数进行求和。前面的!不包括所有没有零和等于0的列。

代码语言:javascript
复制
df[!colSums(df==0)]

  Column2 Column3 Column4
1    0.05    0.07    0.08
2    0.09    0.22    0.39
3    0.56    0.88    0.56

下面是如何获得保留和删除的列列表:

代码语言:javascript
复制
retainedColumns <- which(!colSums(df==0)) 
#Column2 Column3 Column4 
#  2       3       4 

removedColumns <- which(colSums(df==0) > 0)
#Column1 
#  1 

#A double negation (!!) would also work here:
removedColumns <- which(!!colSums(df==0))

数据

代码语言:javascript
复制
df <- read.table(text="Column1 Column2 Column3 Column4
.03 .05 .07 .08
0 .09 .22 .39
0 .56 .88 .56", header=TRUE, stringsAsFactors=FALSE)
票数 4
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55201967

复制
相关文章

相似问题

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