我想通过删除满足或不满足某个条件的列来对数据框进行子集化。例如,给出以下数据:
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结合使用,但这并没有奏效。
答案 0 :(得分:5)
您可以使用select_if()
:
df %>% filter(w == 'a') %>% select_if(function(col) is.numeric(col) && all(col != 0))
# x
#1 1