2017-05-05 66 views
0

实施例的数据:列名称到值

df <- data.frame(one = c(T, F, F, F, F, T), 
       two = c(F, F, F, F, T, F), 
       three = c(F, T, T, T, F, F)) 

真正的数据具有多个列,但是这会做,例如,我需要在以下数据框变为df功能:

data.frame(type = c('one', 'three', 'three', 'three', 'two', 'one')) 

我看着堆和融化并像下面几个奇怪的变通办法:

df.new <- data.frame(type = c(rep.int(NA, 6))) 
for(i in 1:ncol(df)) { 
    df.new[,1] <- ifelse(df[,i], colnames(df)[i], df.new[,1]) 
} 
df.new 

但有没有,做了功能这个?

+0

是的,你说得对。我在寻找时没有发现这个问题 – Dutchmv

回答

1

在基础R使用max.col试试这个矢量:

data.frame(type=names(df)[max.col(df)]) 

    # type 
# 1 one 
# 2 three 
# 3 three 
# 4 three 
# 5 two 
# 6 one