2016-11-08 67 views
0

我想要在所有列中的单个条件下的数据框的子集的行子,避免使用subsetR - 在所有列中的条件下的数据帧的子集

我明白如何子集单个列,但我不能概括所有列(没有调用所有列)。

初始数据帧:

V1 V2 V3 
1 1 8 15 
2 2 0 16 
3 3 10 17 
4 4 11 18 
5 5 0 19 
6 0 13 20 
7 7 14 21 

在本例中,我想子集中的行,而不零。

预期输出:

V1 V2 V3 
1 1 8 15 
2 3 10 17 
3 4 11 18 
4 7 14 21 

由于

+2

请详细说明你的问题有点进一步。例如,什么是子集条件? – lmo

+0

@lmo它几乎看起来好像被保留的行是按升序排列的,但并不完全。 –

+1

@TimBiegeleisen另一种可能的模式是删除所有包含0的行。 – lmo

回答

1
# create your data 
a <- c(1,2,3,4,5,0,7) 
b <- c(8,0,10,11,0,14,14) 
c <- c(15,16,17,18,19,20,21) 
data <- cbind(a, b, c) 

# filter out rows where there is at least one 0 
data[apply(data, 1, min) > 0,] 
0

rowSums使用函数匹配0后的溶液。

# creating your data 
data <- data.frame(a = c(1,2,3,4,5,0,7), 
        b = c(8,0,10,11,0,14,14), 
        c = c(15,16,17,18,19,20,21)) 

# Selecting rows containing no 0. 
data[which(rowSums(as.matrix(data)==0) == 0),] 

另一种方式

data[-unique(row(data)[grep("^0$", unlist(data))]),]