首页 > 解决方案 > 如果所有值都是特定值,则删除一列

问题描述

如果所有单元格都带有No Items.

df1 <- data.frame(cat =   c(1,1,1,"No items",2,2,2,"No items"),
                  item1 = c(0,0,1,0,1,1,"No items",0),
                  item2 = c("No items","No items","No items","No items","No items","No items","No items","No items"),
                  item3 = c(0,0,1,"No items",1,0,0,0))

> df1
       cat    item1    item2    item3
1        1        0 No items        0
2        1        0 No items        0
3        1        1 No items        1
4 No items        0 No items No items
5        2        1 No items        1
6        2        1 No items        0
7        2 No items No items        0
8 No items        0 No items        0

在这种情况下,我需要删除item2列。所需的输出将是:

> df1
       cat    item1    item3
1        1        0        0
2        1        0        0
3        1        1        1
4 No items        0 No items
5        2        1        1
6        2        1        0
7        2 No items        0
8 No items        0        0

有任何想法吗?

谢谢!

标签: r

解决方案


一种base R方法,

df1[,colSums(df1 == "No items") != nrow(df1)]

给,

       cat    item1    item3
1        1        0        0
2        1        0        0
3        1        1        1
4 No items        0 No items
5        2        1        1
6        2        1        0
7        2 No items        0
8 No items        0        0

推荐阅读