1

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

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

我想拥有

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

任何帮助,将不胜感激

4

1 回答 1

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

Whereapply循环遍历df == 1data.frame 的行并paste创建一个字符串。

于 2013-03-09T21:32:32.707 回答