我是一个热心的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,b和c是该人是否具有此特征的虚拟变量(始终为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个变量和数百个观察,我将不得不自动完成整个过程.
对你的帮助表示感谢.非常感谢!
基数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)
| 归档时间: |
|
| 查看次数: |
312 次 |
| 最近记录: |