如何在R中创建“逻辑AND”列联表?

问题描述 投票:1回答:2

我有一组看起来像这样的数据:

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。

此外,此表摘要的名称是什么?

r
2个回答
2
投票
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

0
投票

crossprod是您要寻找的东西

crossprod(as.matrix(df))
#      typeA typeB typeC
#typeA     4     3     2
#typeB     3     4     2
#typeC     2     2     4
© www.soinside.com 2019 - 2024. All rights reserved.