Учитывая вектор
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
у вас есть в вашем вопросе.