0

次のようなデータフレームがあります

 X     Y    VALUE    
"AAA" "BBB"
"CCC" "AAA"

次のようなマトリックスもあります。

     AAA BBB CCC
 AAA  1   13  2
 BBB  27  11  4
 CCC  6   12  3

列名と行名として AAA、BBB、および CCC を使用します。データ フレームの VALUE 列にマトリックスの値を入力するにはどうすればよいですか?

4

2 に答える 2

2

できるよ

df$VALUE <- mat[cbind(df$X, df$Y)]

あなたの例を使用して:

df <- data.frame(X = c("AAA", "CCC"),
                 Y = c("BBB", "AAA"), stringsAsFactors = FALSE)
df
#     X   Y
# 1 AAA BBB
# 2 CCC AAA

mat <- matrix(c(1, 27, 6, 13, 11, 12, 2, 4, 3),
              nrow = 3, ncol = 3,
              dim = list(c("AAA", "BBB", "CCC"),
                         c("AAA", "BBB", "CCC")))
mat
#     AAA BBB CCC
# AAA   1  13   2
# BBB  27  11   4
# CCC   6  12   3

df$VALUE <- mat[cbind(df$X, df$Y)]
df
#     X   Y VALUE
# 1 AAA BBB    13
# 2 CCC AAA     6
于 2012-07-27T03:42:54.343 に答える
0

また、melt を使用してマトリックスからデータフレームを直接取得することもできます。

library(reshape2)
melt(mat)
于 2012-07-27T06:35:37.780 に答える