2017-03-31 63 views
1

行我有这样的数据:删除基于特定条件

name keyword1 keyword2 keyword3 
    artA  0   1   0 
    artA  1   1   0 
    artB  0   0   1 
    artB  1   1   0 
    artC  1   1   0 
    artD  0   0   0 
    artD  0   0   0 

怎么可能去除基于列名SUM行?

表达:

df <- df$name[rowSums(df$name != 0)>0,] 

预期结果:

name keyword1 keyword2 keyword3 
artA 0   1   0 
artA 1   1   0 
artB 0   0   1 
artB 1   1   0 
artC 1   1   0 
+2

'DF [rowSums做到这一点(DF [2:4])= = 0,]'? – mtoto

回答

1

我们可以Reduce

df1[Reduce(`|`, df1[-1]),] 
# name keyword1 keyword2 keyword3 
#1 artA  0  1  0 
#2 artA  1  1  0 
#3 artB  0  0  1 
#4 artB  1  1  0 
#5 artC  1  1  0 
+0

谢谢,如果我想削减行> 10我试过这个'df1 [Reduce('|',df1 [-1])> 10,]'但我认为它不正确 – Keri

+0

@Kari YOu需要'df1 [Reduce (“|”,lapply(df1 [-1],“>”,10)),]'您的情况在这种情况下不明确 – akrun

+0

@我尝试了您的建议,但它删除了所有行。 – Keri