使用R中的虚拟变量创建列表

时间:2013-03-09 21:19:07

标签: arrays r list

我有三个表示数据来源的虚拟变量

                DS1    DS2    DS3
       Pers1     1      0      0
       Pers2     0      1      0
       Pers3     0      1      1

我想要

                Source
         Pers1   "DS1"
         Pers2   "DS2"
         Pers3   "DS2"|"DS3"

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:2)

我会做这样的事情:

df = data.frame(DS1 = c(1,0,0), 
                DS2 = c(0,1,1), 
                DS3 = c(0,0,1))
df$source = apply(df == 1, 1, function(x) paste(names(df)[x], collapse = "|"))
> df
  DS1 DS2 DS3  source
1   1   0   0     DS1
2   0   1   0     DS2
3   0   1   1 DS2|DS3

applydf == 1 data.frame的行上方循环,paste创建一个字符串。