2017-08-11 76 views
1

我在R A DF与值删除行小于中的R

sample1 sample2 sample3 sample4 
price1 10 21 32 43 
price2 12 24 15 18 
price3 1 2 15 8 
price4 16 30 44 58 
price5 18 33 48 63 
price6 20 36 52 68 
price7 22 39 56 73 
price8 24 42 60 78 
price9 26 45 64 83 
price10 28 48 68 88 

我想执行一个操作,其中我想下降,在超过2列

具有值小于15的行

所以

price3 1 2 15 8 

将被删除

回答

4

我们可以使用rowSums到CRE吃了逻辑矢量

df1[rowSums(df1 < 15) <=2 , , drop = FALSE] 
#  sample1 sample2 sample3 sample4 
#price1  10  21  32  43 
#price2  12  24  15  18 
#price4  16  30  44  58 
#price5  18  33  48  63 
#price6  20  36  52  68 
#price7  22  39  56  73 
#price8  24  42  60  78 
#price9  26  45  64  83 
#price10  28  48  68  88 
+0

我曾尝试这个'df = df [rowSums(df> 15)> = 2,]'但对代码没有信心,你是否需要提及drop? – sbradbio

+1

@sbradbio它是需要特殊情况下,只有单行/列,以避免强迫它'矢量' – akrun

+1

啊我看thnks – sbradbio

1

apply版本

df[apply(df, 1, function(x) sum(x < 15) <= 2) ,] 
2

你可以查找该行具有小于15大于2点的值,并排除他们...

df <- cbind(12:21, 21:12, 12:21, 22:31) 
df 
KEEP <- sapply(1:nrow(df), (function(i){ 
    sum(df[i,]<15) <2 
})) 
final.df <- df[KEEP,] 
final.df 
+0

有趣,也会试试这个.. – sbradbio