簡體   English   中英

壓縮代碼:檢查R中數據框中的多個列是否跟隨布爾值

[英]Condensing code: Check that multiple columns follow a boolean in data frame in R

我有一個數據幀(df),其中包含一些NA值。 我想提取多列中有NA值的行(在下面的示例中,我這樣做是針對第12-20列):

NArows = which(is.na(df[,20])&is.na(df[,19]&is.na(df[,18])&is.na(df[,17])&is.na(df[,16])&is.na(df[,15])&is.na(df[,14])&is.na(df[,13])&is.na(df[,12])))

有沒有一種更可讀(更簡潔)的方法來完成此操作,而無需將每個列條件都用&符號包圍?

感謝您的任何幫助...

嘗試這個:

cols <- 12:20
NArows <- which(apply(df[cols],1,function(y)sum(!is.na(y))==0))

它將您的df切片為您關心的'cols',然后將其應用於測試is.na()的每一行,如果發現這些cols中的所有值均為NA,則會將該行號添加到NArows中。

或根據大衛·阿倫堡的答案,這會標記具有2個或更多NA的任何行:

NArows <- which(rowSums(is.na(df[12:20])) > 1L)

為了使其更符合您的要求,它僅標記所有均為NA的行:

cols <- 12:20
NArows <- which(rowSums(is.na(df[cols])) == ncol(df[cols]))

暫無
暫無

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

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