假设我有以下向量:
V<-c(-1,-1,1,1,1,-1,-1,1)
我想知道以下类别中不同对的数量:
(1,1),( - 1,1),(1,-1)和(-1,-1)
在我的例子中,每个都有一对。
我一直在尝试使用函数split
和setkey
解决此问题,但我无法进行分类。
答案 0 :(得分:2)
ng <- length(V)/2
table(sapply(split(V,rep(1:ng,each=2)),paste0,collapse="&"))
# -1&-1 -1&1 1&-1 1&1
# 1 1 1 1
这是一个更好的选择,也使用split
,遵循@MartinMorgan的回答模式:
table(split(V,1:2))
# 2
# 1 -1 1
# -1 1 1
# 1 1 1
答案 1 :(得分:2)
创建一个索引,该索引将重新循环以选择第一个(或当否定的第二个)元素
> idx = c(TRUE, FALSE)
然后交叉制表观察的发生
> xtabs(~V[idx] + V[!idx])
V[!idx]
V[idx] -1 1
-1 1 1
1 1 1
答案 2 :(得分:1)
或者
table(apply(matrix(v, ncol = 2, byrow = TRUE), 1, paste, collapse = ",") )