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
行。
我有一个包含 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
行。