r - 在 apply 和 unique 中处理 NA 值

标签 r unique apply

我有一个 114 行 x 16 列的数据框,其中行是个人,列是他们的名字或 NA。例如,前 3 行如下所示:

            name name.1      name.2 name.3       name.4 name.5       name.6 name.7       name.8 name.9       name.10 name.11       name.12 name.13        name.14 name.15
1           <NA>   <NA>        <NA>   <NA>         <NA>   <NA>         <NA>   <NA>         <NA>   <NA>      Aanestad    <NA>      Aanestad    <NA>       Aanestad    <NA>
2           <NA>   <NA>        <NA>   <NA>         <NA>   <NA>         <NA>   <NA>     Ackerman   <NA>      Ackerman    <NA>      Ackerman    <NA>       Ackerman    <NA>
3           <NA>   <NA>        <NA>   <NA>         <NA>   <NA>      Alarcon   <NA>      Alarcon   <NA>       Alarcon    <NA>       Alarcon    <NA>           <NA>    <NA>

我想生成所有唯一名称的列表(如果每行有多个唯一名称)或向量(如果每行只有一个唯一名称),长度为 114。

当我尝试时 apply(x,1,unique)我得到一个 2xNcol 数组,其中有时第一行单元格是 NA,有时第二行单元格是 NA。
    [,1]       [,2]       [,3]      [,4]     [,5]      [,6]      [,7]    [,8]   [,9]    
[1,] NA         NA         NA        NA       "Alquist" NA        "Ayala" NA     NA      
[2,] "Aanestad" "Ackerman" "Alarcon" "Alpert" NA        "Ashburn" NA      "Baca" "Battin"

当我想要的只是:
Aanestad
Ackerman
Alarcon
...

我似乎无法弄清楚如何在忽略 NA 的同时应用 unique() 。 na.rm、na.omit 等似乎不起作用。我觉得我错过了一些真正简单的东西......

谢谢!

最佳答案

unique似乎没有 na.rm参数,但您可以在调用它之前自己删除缺失的值:

A <- matrix(c(NA,"A","A",
             "B", NA, NA,
              NA, NA, "C"), nr=3, byrow=TRUE)
apply(A, 1, function(x)unique(x[!is.na(x)]))


[1] "A" "B" "C"

关于r - 在 apply 和 unique 中处理 NA 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2269084/

相关文章:

r - 提取行 r 之间的数据

dictionary - 如何防止将类型用作映射键?

r - 将 lapply 转换为 foreach?

python - 在 Pandas 中使用 Groupby : assign a value from a column conditioned on another column

JavaScript call() 和原型(prototype) - 切片函数

r - 即使数据很小 : Error in mcfork() : unable to fork, 可能的原因:无法分配内存

r - 过滤具有相同行名和列名的 data.frame

r - 数据表中不同变量的唯一观测数

r - 在 R 中解析 URL 字符串

ios - 验证托管对象