计算变量或变量组合为TRUE的实例数

Nik*_*nov 6 for-loop r

我是一个热心的R新手,需要一些帮助!:)

我有一个如下所示的数据框:

id<-c(100,200,300,400)
a<-c(1,1,0,1)
b<-c(1,0,1,0)
c<-c(0,0,1,1)

y=data.frame(id=id,a=a,b=b,c=c)
Run Code Online (Sandbox Code Playgroud)

其中id是唯一标识符(例如人),a,bc是该人是否具有此特征的虚拟变量(始终为1 = TRUE).

我希望R创建一个矩阵或数据框,其中我将变量a,b和c都作为列和行的名称.对于矩阵的值,R必须计算具有此特征的标识符的数量或特征的组合.

因此,例如,ID 100,200和400具有在矩阵的对角线中的特征a,其中a和交叉,R将输入3.仅ID 100具有特征a和b,因此R将输入1,其中a和b交叉,等等.

生成的数据框必须如下所示:

l<-c("","a","b","c")
m<-c("a",3,1,1)
n<-c("b",1,2,1)
o<-c("c",1,1,2)
result<-matrix(c(l,m,n,o),nrow=4,ncol=4)
Run Code Online (Sandbox Code Playgroud)

由于我的数据集有10个变量和数百个观察,我将不得不自动完成整个过程.

对你的帮助表示感谢.非常感谢!

Jos*_*ien 8

基数R:

crossprod(as.matrix(y[,-1]))
#   a b c
# a 3 1 1
# b 1 2 1
# c 1 1 2
Run Code Online (Sandbox Code Playgroud)