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

时间:2018-12-04 00:22:52

标签: r sequence sequential-number

我有一个向量,该向量具有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

1 个答案:

答案 0 :(得分:3)

给出一个向量

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(),则会得到每个值组合的计数。

由于您要“计数”一个值及其旁边的值的出现次数,因此可以调用原始向量上的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行。