簡體   English   中英

刪除具有一定數量的零的列-R

[英]Remove columns with certain number of zeros - R

如何刪除數據中包含6個以上零的列?

請讓我知道如何使我的示例代碼實現我需要做的事情,如果您的方法更短,請也讓我知道。 向我解釋和教我為什么它會起作用。

我的示例代碼刪除零:

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

怎么樣

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

或者,跟隨理查德

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

如果要縮短行數,則用適當的* apply語句替換for循環效果很好。

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

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

如果需要單線,則該函數可以內聯。

如果您有數據框:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM