在查找唯一行时忽略数据框中的NA

时间:2014-11-19 15:31:21

标签: r unique na

我有一个包含20列和大约200行的数据框,我想找到唯一的行。问题是几乎每一行都有几个NAs混入:这实际上是缺少数据,我希望将NA视为"通配符",不用于匹配其他NA。

以下两行应被视为匹配(即非唯一)

T, S, NA, Z
NA, S, G, Z

我已尝试将不兼容的参数用于独特的功能,但它似乎并未实现。非常感谢。

2 个答案:

答案 0 :(得分:0)

将它放在双循环中:

all(na.omit(x[1,] == x[2,]))

用i和j替换1和2,循环完成需要检查的所有比较。

答案 1 :(得分:0)

你可以尝试

val <-  apply(df, 1, function(x) {paste(na.omit(x), collapse='')})
df[!duplicated(val),]
#    V1 V2   V3 V4
#1    T  S <NA>  Z
#2 <NA>  S    G  Z
#3    S  G    Z  T

数据

 df <- structure(list(V1 = c("T", NA, "S", "S", "S"), V2 = c("S", "S", 
 "G", NA, "G"), V3 = c(NA, "G", "Z", "Z", NA), V4 = c("Z", "Z", 
 "T", "G", "Z")), .Names = c("V1", "V2", "V3", "V4"), row.names = c(NA, 
 -5L), class = "data.frame")