在R中:矩阵的两种方式匹配 [英] in R: Two Way Match to Matrix

查看:230
本文介绍了在R中:矩阵的两种方式匹配的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如果我有一个data.frame

If I have a 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

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

I want to create a matrix of DEP as ROW ID, and ARR as COL ID, and fill in the matrix with the relevant matching NO...

例如

  k l m n o
a 6 7 8 9 10 ...etc

每种组合都是唯一的.

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

DEP and ARR are the same vector of names. I have chosen two different sample ones here for clarity.

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

I am struggling to use match to sort them and fill them into the matrix template I created below:

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

是否有一种有效的方法?非常感谢您的所有建议!

Is there an efficient way of doing this? Many thanks for all advice!

推荐答案

?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

这篇关于在R中:矩阵的两种方式匹配的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆