4

以下の表を考えると:

X = 

        col1    col2    col3
row1    "A"      "A"     "1.0"
row2    "A"      "B"     "0.9"
row3    "A"      "C"     "0.4"
row4    "B"      "A"     "0.9"
row5    "B"      "B"     "1.0"
row6    "B"      "C"     "0.2"
row7    "C"      "A"     "0.4"
row8    "C"      "B"     "0.2"
row9    "C"      "C"     "1.0"

ここで、col3 は、col1 と col2 のエンティティのペア間の相関測定値です。

列名が col1、行名が col2、行列のセルの値が col3 である行列を作成するにはどうすればよいですか?

4

2 に答える 2

3
df <- read.table(textConnection('col1    col2    col3
row1    "A"      "A"     "1.0"
row2    "A"      "B"     "0.9"
row3    "A"      "C"     "0.4"
row4    "B"      "A"     "0.9"
row5    "B"      "B"     "1.0"
row6    "B"      "C"     "0.2"
row7    "C"      "A"     "0.4"
row8    "C"      "B"     "0.2"
row9    "C"      "C"     "1.0"'), header=T)

## fetch row/column indices
rows <- match(df$col1, LETTERS)
cols <- match(df$col2, LETTERS)

## create matrix
m <- matrix(0, nrow=max(rows), ncol=max(cols))

## fill matrix
m[cbind(rows, cols)] <- df$col3

m
#     [,1] [,2] [,3]
#[1,]  1.0  0.9  0.4
#[2,]  0.9  1.0  0.2
#[3,]  0.4  0.2  1.0
于 2013-09-01T17:32:07.203 に答える