在R中:与矩阵的双向匹配

Can*_*Lee 1 r matrix

如果我有data.frame

df <- data.frame(DEP=letters[1:5], ARR=letters[11:15], NO=1:5+5)

   DEP ARR  NO
1   a   k   6
2   b   l   7
3   c   m   8
4   d   n   9
5   e   o  10
Run Code Online (Sandbox Code Playgroud)

我想创建一个DEP矩阵作为ROW ID,ARR作为COL ID,并用相关的匹配NO填充矩阵...

例如

  k l m n o
a 6 7 8 9 10 ...etc
Run Code Online (Sandbox Code Playgroud)

每种组合都是独特的.

DEP和ARR是相同的名称向量.为清楚起见,我在这里选择了两个不同的样本.

我正在努力使用匹配对它们进行排序并将它们填充到我在下面创建的矩阵模板中:

mat <- matrix(0,nrow(df),nrow(df)); colnames(mat) <- df$ARR; rownames(mat) <- df$DEP;

  k l m n o
a 0 0 0 0 0
b 0 0 0 0 0
c 0 0 0 0 0
d 0 0 0 0 0
e 0 0 0 0 0
Run Code Online (Sandbox Code Playgroud)

有没有一种有效的方法呢?非常感谢所有建议!

the*_*ail 5

?xtabs:

xtabs(NO ~ ., data=df)
#   ARR
#DEP  k  l  m  n  o
#  a  6  0  0  0  0
#  b  0  7  0  0  0
#  c  0  0  8  0  0
#  d  0  0  0  9  0
#  e  0  0  0  0 10
Run Code Online (Sandbox Code Playgroud)