从序列生成成对运动数据

时间:2017-07-22 12:49:27

标签: r

我有一个看起来像这样的序列

  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

中得到这个

1 个答案:

答案 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)