我有一组看起来像这样的数据:
df <- data.frame(typeA = c(T,T,F,F,T,F,T,F), typeB = c(T,F,T,F,T,F,T,F), typeC = c(F,F,F,F,T,T,T,T))
而且我想输出一个看起来像的表
| | TypeA | TypeB | TypeC |
|-------|-------|-------|-------|
| TypeA | 4 | 3 | 2 |
| TypeB | 3 | 4 | 2 |
| TypeC | 2 | 2 | 4 |
其中每个单元格是同时具有行和列TRUE的观测值数量。
例如:第一行第二列显示有3个ob,TypeA == T && TypeB == T。
此外,此表摘要的名称是什么?
sapply(df, function(x) sapply(df, function(y) sum(x * y)))
#OR
t(df) %*% as.matrix(df)
# typeA typeB typeC
#typeA 4 3 2
#typeB 3 4 2
#typeC 2 2 4
crossprod
是您要寻找的东西
crossprod(as.matrix(df))
# typeA typeB typeC
#typeA 4 3 2
#typeB 3 4 2
#typeC 2 2 4