我的数据格式如下:
ID Species Side_of_boat
1 spA Port
2 spB Starboard
3 spA NA
我想写一行代码,这些代码为我提供了所有行的唯一ID,这些行位于船的“#”旁边。
我试过了:
unique(df$ID[df$side_of_boat == "NA"])
但它并没有给我我想要的输出。我希望输出为:
"3"
谢谢!
答案 0 :(得分:1)
尝试
unique(df$ID[is.na(df$Side_of_boat)])
代替。 NA
是R中的特殊值,并且还有自己的特殊函数is.na()
来测试条目是否为NA
。请查看?NA
以获取更多信息。
答案 1 :(得分:1)
#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
答案 2 :(得分:0)
尝试:
df$ID[which(is.na(df$Side_of_Boat))]
它应该为您提供ID的向量,无论它们是数字还是字符