有条件地 Select 并将 Double 转换为因子列表
Conditionally Select and Convert a Double to a list of Factors
这个问题有点奇怪,不知道从哪里开始。
我有一个双:
, , 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
我想根据每列行中的最大值将其转换为因子列表。例如,“1”行将是 A
,因为它的最大值为 0.55,“3”行将是 C
,因为最大值是 0.47 等等。最终结果如下:
A C A A...C A
Levels: A B C
我试过从 data.frame
和 data.table::as.data.table
开始,但都没有真正帮助我。任何帮助将不胜感激,谢谢!
您可以尝试使用 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
这个问题有点奇怪,不知道从哪里开始。 我有一个双:
, , 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
我想根据每列行中的最大值将其转换为因子列表。例如,“1”行将是 A
,因为它的最大值为 0.55,“3”行将是 C
,因为最大值是 0.47 等等。最终结果如下:
A C A A...C A
Levels: A B C
我试过从 data.frame
和 data.table::as.data.table
开始,但都没有真正帮助我。任何帮助将不胜感激,谢谢!
您可以尝试使用 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