我在数据框中有很多列(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
答案 0 :(得分:1)
使用apply
和toString
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
可确保同一组唯一值始终以相同的顺序显示。