[英]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.