我有一个看起来像这样的序列
SEQENCE
1 A
2 B
3 B
4 C
5 A
现在从这个序列中,我想得到这样的矩阵,其中我的行和第j列元素表示从第i行节点到第j列节点发生移动的次数
A B C
A 0 1 0
B 0 1 1
C 1 0 0
我如何在R
中得到这个答案 0 :(得分:1)
1)像这样使用table
:
s <- DF[, 1]
table(tail(s, -1), head(s, -1))
,并提供:
A B C
A 0 0 1
B 1 1 0
C 0 1 0
2)或者像这样。由于embed
不适用于因素,我们会将因子转换为字符
s <- as.character(DF[, 1])
do.call(table, data.frame(embed(s, 2)))
,并提供:
X2
X1 A B C
A 0 0 1
B 1 1 0
C 0 1 0
3) xtabs
也有效:
s <- as.character(DF[, 1])
xtabs(data = data.frame(embed(s, 2)))
,并提供:
X2
X1 A B C
A 0 0 1
B 1 1 0
C 0 1 0
注意:可重复形式的输入DF
为:
Lines <- " SEQENCE
1 A
2 B
3 B
4 C
5 A"
DF <- read.table(text = Lines, header = TRUE)