【问题标题】:find unique a row of a data frame R找到唯一的一行数据框R
【发布时间】:2017-09-21 20:46:04
【问题描述】:

我在数据框中有很多列 (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

欢迎提出任何建议!

瓦内斯

【问题讨论】:

    标签: r dataframe row unique


    【解决方案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 确保同一组唯一值始终以相同的顺序出现。

    【讨论】:

    • unique() 包裹在sort() 中也是值得的,这样相同的唯一集合总是以相同的顺序出现。
    • @AndrewGustar 是的,你是对的,请随时修改它~ ;-)
    猜你喜欢
    • 2016-11-03
    • 2021-10-26
    • 1970-01-01
    • 2016-07-19
    • 1970-01-01
    • 1970-01-01
    • 2020-03-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多