Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
307 views
in Technique[技术] by (71.8m points)

r - Get names of column with max value for each row

i need your help, i have a data frame like this

int x  y  z
1   0  1  0
2   1  0  0
3   0  0  1

and the result that i need must be like this

int letter

1    y
2    x
3    z

my code is:

for (i in 1:nrow(samples)) 
    for(j in 1:ncol(samples)) 
        if(samples[i,][,j] == 1) print(c(i,names(samples[i,j])))

but it is not showing the second column and i need save in a new data.frame, any suggestion? thanks.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You can use max.col:

dat$newcol <- names(DF)[-1][max.col(DF[-1])]

This gives

  int x y z newcol
1   1 0 1 0      y
2   2 1 0 0      x
3   3 0 0 1      z

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...