我有三个表示数据来源的虚拟变量
DS1 DS2 DS3
Pers1 1 0 0
Pers2 0 1 0
Pers3 0 1 1
我想要
Source
Pers1 "DS1"
Pers2 "DS2"
Pers3 "DS2"|"DS3"
任何帮助将不胜感激
答案 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
apply
在df == 1
data.frame的行上方循环,paste
创建一个字符串。