2015-10-17 27 views
0

如何刪除數據中具有6個以上零的列?刪除一定數量的零的列 - R

請讓我知道如何讓示例代碼實現我需要做的事情,如果您有更短的方式,請讓我知道。解釋並告訴我爲什麼它可以工作,也將不勝感激。

我的示例代碼刪除零:

removeThese = c() 
for(i in 1:ncol(myData)) 
{ 
rowsWithZeros = which(myData[,i] == 0) 
if(length(rowsWithZeros) > 6) 
{ 
removeThese = c(removeThese, i) 
} 
} 
myData= myData[,-removeThese] 
+0

它是一個矩陣或數據幀? –

回答

0

如果你想縮短線路的數量,用合適的替代for循環*申請發言效果很好。

sixZeroes = function(col) { 
    sum(col==0)>6 
} 

myData=myData[,apply(myData,2,sixZeroes)] 

的功能可以是內聯的,如果你想要一個班輪。

+0

2是什麼? myData = myData [,apply(myData,2,sixZeroes)] –

+0

這是apply函數中的MARGIN參數。看看'?apply' – Zenos

+0

哦,我明白了!謝謝!! –

2

如何

i <- colSums(myData == 0, na.rm=TRUE) < 7 
myData <- myData[, i, drop=FALSE] 

或以下理查德

i <- colSums(myData == 0, na.rm=TRUE) < 7 
myData <- myData[i] 
+1

如果你使用list子集,你將不需要'drop',就像'data [colSums(data == 0,na.rm = TRUE)<7]' –

0

如果你有一個數據幀:

Filter(function(x) sum(x==0)<=6, df)