Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get names of column with max value for each row

Tags:

r

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.

like image 933
user2806134 Avatar asked Dec 21 '25 05:12

user2806134


1 Answers

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
like image 188
Frank Avatar answered Dec 24 '25 01:12

Frank