根据某些值的存在/不存在从数据框中删除列

时间:2016-11-30 18:42:04

标签: r dplyr subset multiple-columns

我想通过删除满足或不满足某个条件的列来对数据框进行子集化。例如,给出以下数据:

df <- data.frame(w = c('a', 'b', 'c'), 
                 x = c(1, 0, 0), 
                 y = c(0, 1, 0), 
                 z = c(0, 0, 1))

给出了:

  w x y z
  a 1 0 0
  b 0 1 0
  c 0 0 1

我希望在对行进行子集化后删除包含0的列。例如:

df %>% filter(., w == 'a')

制作:

w x y z
a 1 0 0

然后我想减少到:

x
1

我希望使用dplyr执行此操作,因此下一步应在filter命令之后进行管道传输。我已尝试将summarise与apply结合使用,但这并没有奏效。

1 个答案:

答案 0 :(得分:5)

您可以使用select_if()

df %>% filter(w == 'a') %>% select_if(function(col) is.numeric(col) && all(col != 0))

#  x
#1 1