R中向量中下一个值的出现次数

Number of occurrences of next value in a vector in R

我有一个包含 1-7 随机数的向量,我希望能够确定向量中第一个值之后的下一个数字,以便我可以查找模式并获得一个 7x7 值矩阵显示特定数字跟随另一个数字的频率。

行中的第一个数字和列中下一个数字的计数。

我目前正在尝试使用双循环来执行此操作,但在此过程中我感到很困惑。

例如-

Example vector-

floor(runif(10,1,8))
[1] 3 5 6 6 6 1 7 7 5 3

Answer-

  1  2  3  4  5  6  7
1 0  0  0  0  0  0  1
2 NA NA NA NA NA NA NA
3 0  0  0  0  1  0  0
4 NA NA NA NA NA NA NA
5 0  0  1  0  0  1  0
6 1  0  0  0  0  3  0
7 0  0  0  0  1  0  1

给定一个向量

v <- c(3, 5, 6, 6, 6, 1, 7, 7, 5, 3)

如果您在向量上调用 table(),您会得到每个元素的计数

table( v )
# v
# 1 3 5 6 7 
# 1 2 2 3 2

如果您对多个向量调用 table(),您会得到每个值组合的计数。

因为你想'count'一个值和它旁边的值出现的次数,你可以在原始向量上调用table(),同一个向量将一个值移动到正确的。

table( v[1:(length(v)-1)], v[2:length(v)] )

#  y
# x  1 3 5 6 7
#  1 0 0 0 0 1
#  3 0 0 1 0 0
#  5 0 1 0 1 0
#  6 1 0 0 2 0
#  7 0 0 1 0 1

可以使它更简洁(由 Julius Vainora 提供)
table(head(v, -1), tail(v, -1))

注意:结果不包括您问题中的 NA 行。