Converting multiple boolean columns to single factor column

后端 未结 4 386
伪装坚强ぢ
伪装坚强ぢ 2020-12-12 03:02

my data frame look like this:

      A S1 S2 S3 S4
1   ex1  1  0  0  0
2   ex2  0  1  0  0
3   ex3  0  0  1  0
4   ex4  1  0  0  0
5   ex5  0  0  0  1
6   ex6         


        
4条回答
  •  轮回少年
    2020-12-12 03:45

    You could try: If df is the dataframe

    data.frame(A=df$A, Type=rep(names(df)[-1], nrow(df))[!!t(df[,-1])])
        A Type
    1   ex1   S1
    2   ex2   S2
    3   ex3   S3
    4   ex4   S1
    5   ex5   S4
    6   ex6   S2
    7   ex7   S1
    8   ex8   S2
    9   ex9   S3
    10 ex10   S1
    

    Also:

       names(df)[-1][t(df[-1])*seq_len(ncol(df)-1)]
     [1] "S1" "S2" "S3" "S1" "S4" "S2" "S1" "S2" "S3" "S1"
    

提交回复
热议问题