我有以下格式數據中尋找與NA一排獨特identifyer在特定列:R中
ID Species Side_of_boat
1 spA Port
2 spB Starboard
3 spA NA
我想編寫一行代碼,給我的唯一ID的所有在「船的一側」有NA的行。
我曾嘗試:
unique(df$ID[df$side_of_boat == "NA"])
但它不給我我想要的輸出。我想輸出爲:
"3"
謝謝!
我有以下格式數據中尋找與NA一排獨特identifyer在特定列:R中
ID Species Side_of_boat
1 spA Port
2 spB Starboard
3 spA NA
我想編寫一行代碼,給我的唯一ID的所有在「船的一側」有NA的行。
我曾嘗試:
unique(df$ID[df$side_of_boat == "NA"])
但它不給我我想要的輸出。我想輸出爲:
"3"
謝謝!
嘗試
unique(df$ID[is.na(df$Side_of_boat)])
代替。 NA
是R中的一個特殊值,它也有其自己的特殊功能is.na()
來測試條目是否爲NA
。檢查?NA
獲取更多信息。
#Method1
n <- which(is.na(df$side_of_boat))
你也可以使用*apply
這一點,例如
lapply(apply(df$side_of_boat, 1, function(x) which(!is.na(x))) , paste, collapse=", ")
#Method 2
new_DF <- subset(df, is.na(df$side_of_boat))
#Method 3
你也可以編寫一個函數來爲你做這個:
getNa <- function(dfrm) lapply(dfrm, function(x) which(is.na(x)))
#Note
如果您有NA字符值,第一次運行
df$side_of_boat[df$side_of_boat=='NA'] <- NA
嘗試:
df$ID[which(is.na(df$Side_of_Boat))]
它應該給你的ID的載體,無論他們是數字或字符
+1,因爲方法1和方法3也適用於'ID'不唯一的情況(在給定的例子中,這不是唯一的情況,但通常可以)。 – pfifas
關於#1:如果ID是以2開頭還是1以外的任何數字,或者通常如果它不是序列1:n,那該怎麼辦?和方法2:子集是正確的,但它不會產生所需的輸出,因爲OP問a)只有ID和b)他們只需要唯一的值。 –
我不認爲這會導致#1的問題。我一直使用它,我的ID通常以字母開頭,然後有隨機數字。這只是測試一個單元格是否NA。方法2只是給出一種額外的方式來獲得NA行,這對希望未來的讀者有用,但是,它確實提供了完整的記錄。 –