Edited at

Contingency Matrix から Listへの変換

More than 1 year has passed since last update.

Contingency Matrix(Table)を使っていて、一時的にListへ変換したいことがあります。

このContingecy Matrixから

cmat =

id
A
B
C

1
F
T
F

2
F
T
F

3
F
F
T

3
F
F
F

または

id
A
B
C

1
0.1
0.6
0.3

2
0.1
0.7
0.1

3
0.1
0.1
0.4

4
0
0
0

こういうリストへ

clist =

key
value

1
B

2
B

3
C

4
A


一解法

reshapeやtidyrを使ってやるのが基本のようですが、論理値だけでなく、値のうち最大のものという条件などを考えると、以下のような感じにしてみました。

clist <- cmat %>% tidyr::gather(key, value, - id) %>%

group_by(id) %>%
top_n(n = 1) %>%
slice(1) %>%
arrange(id)

確率で選択したい場合など、最大のもの(TRUE)が複数ある場合や、全部0(FALSE)の場合にも対応したいので、無理やりですが、これでもいいかもしれません。

うーん、違うな。