基于某些值的存在/不存在删除数据框中的列
问题描述:
我想通过删除符合或不符合某些条件的列来对数据框进行子集合。例如,给出以下数据:基于某些值的存在/不存在删除数据框中的列
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
与适用,但没有奏效。
答
您可以使用select_if()
:
df %>% filter(w == 'a') %>% select_if(function(col) is.numeric(col) && all(col != 0))
# x
#1 1
笨重,但在基地,你可以使用:'lapply(DF $ W,函数(X){DF [其中(DF $ W = = X),其中(DF [which(df $ w == x),]!= 0)]})'这会给你一个列表,列出每个'df $ w'中的值 – Badger