找到唯一的一行数据帧R.

时间:2017-09-21 20:46:04

标签: r dataframe row unique

我在数据框中有很多列(120)。 我想在此数据框中创建一个新列,每行包含120列中每行的值的唯一值(忽略NA)。例如:

V1 V2 V3 V4 V5
a a NA c d
c d e f e
x x x NA NA

应添加V6列

V6
a c d
c d e f
x

任何建议都非常受欢迎!

Wannes

1 个答案:

答案 0 :(得分:1)

使用applytoString

db$New=apply(db,1,function(x) toString(sort(unique(x[!is.na(x)]))))
db
  V1 V2   V3   V4   V5        New
1  a  a <NA>    c    d    a, c, d
2  c  d    e    f    e c, d, e, f
3  x  x    x <NA> <NA>          x

或使用paste

db$New=apply(db,1,function(x) paste(sort(unique(x[!is.na(x)]),collapse = ' ')))
db
  V1 V2   V3   V4   V5     New
1  a  a <NA>    c    d   a c d
2  c  d    e    f    e c d e f
3  x  x    x <NA> <NA>       x

添加的sort可确保同一组唯一值始终以相同的顺序显示。