This is a bit of a weird problem, not sure where to start with this. I have a double:
, , s0
A B C
1 0.55417205 -0.0200187 0.2409565
3 -0.56678215 -0.0200187 0.4754662
18 1.37831681 -0.0200187 0.4260734
20 0.55175931 -0.0200187 0.4061181
28 -1.12156686 -0.0200187 0.4702297
30 0.06913091 -0.0200187 0.4188555
47 0.95545025 -0.0200187 0.2715263
50 0.07951062 -0.0200187 0.4648517
52 0.16938094 -0.0200187 0.3918239
68 0.12219372 -0.0200187 0.4339989
70 -0.11545481 -0.0200187 0.6075105
82 -0.36738143 -0.0200187 0.4444718
83 -0.63349441 -0.0200187 0.4593321
89 2.17432660 -0.0200187 0.1025435
and I want to convert this, based on the highest values in each column row, to a list of factors. For example, row "1" would be A
because that has the highest value 0.55, row "3" would be C
because the highest value is 0.47 etc. The end result would look like:
A C A A...C A
Levels: A B C
I've tried starting with data.frame
and data.table::as.data.table
and neither really get me anywhere. Any help would be appreciated, thank you!
You may try using reshape2::melt
dummy <- read.table(text = " row_id A B C
1 0.55417205 -0.0200187 0.2409565
3 -0.56678215 -0.0200187 0.4754662
18 1.37831681 -0.0200187 0.4260734
20 0.55175931 -0.0200187 0.4061181
28 -1.12156686 -0.0200187 0.4702297
30 0.06913091 -0.0200187 0.4188555
47 0.95545025 -0.0200187 0.2715263
50 0.07951062 -0.0200187 0.4648517
52 0.16938094 -0.0200187 0.3918239
68 0.12219372 -0.0200187 0.4339989
70 -0.11545481 -0.0200187 0.6075105
82 -0.36738143 -0.0200187 0.4444718
83 -0.63349441 -0.0200187 0.4593321
89 2.17432660 -0.0200187 0.1025435", header = T)
library(dplyr)
library(reshape2)
dummy %>%
melt(id.vars = "row_id") %>%
group_by(row_id) %>%
filter(value == max(value)) %>%
arrange(row_id) %>%
pull(variable)
[1] A C A A C C A C C C C C C A
Levels: A B C