作者huangsam (sam)
看板R_Language
标题[问题] 分组问题
时间Wed Feb 21 18:55:25 2018
[问题类型]:
程式谘询(我想用R 做某件事情,但是我不知道要怎麽用R 写出来)
[软体熟悉度]:
请把以下不需要的部份删除
使用者(已经有用R 做过不少作品)
[问题叙述]:
请简略描述你所要做的事情,或是这个程式的目的
想计算同个类组的比例
举例来说
> V1=c( "A","A","A","A","B", "B" ,"C", "C")
> V2= c( "A2","A3","A4","A5","A1", "B1" ,"A1", "C1")
> DTTEST <- data.frame(V1,V2)
> DTTEST
V1 V2
1 A A2
2 A A3
3 A A4
4 A A5
5 B A1
6 B B1
7 C A1
8 C C1
我想看V2这个栏位中分群的关系,好比说A1出现两次有跟B1跟C1同群过
那是否有函数可以呈现以下
A1 A2 A3 A4 A5 B1 C1
A1 2 0 0 0 0 1 1
A2 0 1 1 1 1 0 0
A3 0 0 1 1 1 0 0
.
.
.
B1 1 0 0 0 0 1 0
-----------------------------------------------------------------
尝试C大的方法结果如下
> table(DTTEST$V1, DTTEST$V2)
A1 A2 A3 A4 A5 B1 C1
A 0 1 1 1 1 0 0
B 1 0 0 0 0 1 0
C 1 0 0 0 0 0 1
有办法像我上面想呈现的那样吗?
A1 A2 A3 A4 A5 B1 C1
A1 2 0 0 0 0 1 1
A2 0 1 1 1 1 0 0
A3 0 0 1 1 1 0 0
.
.
.
B1 1 0 0 0 0 1 0
还是需要再加上那些函数转成以下形式
谢谢
-------------------------------------------------
後来我想了一下不知道这样方法可否?
利用矩阵的关系
table(DTTEST$V2, DTTEST$V1) %*% table(DTTEST$V1, DTTEST$V2)
谢谢
类似相关性的呈现,谢谢
[程式范例]:
[环境叙述]:
[关键字]:
分组关系
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 123.51.152.20
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1519210528.A.F96.html
1F:→ celestialgod: table(df$V1, df$V2) 02/21 18:58
※ 编辑: huangsam (123.51.152.20), 02/22/2018 09:30:49
2F:→ x88776544pc: apply(df2, 2, function(x) if(sum(x)-1) {colSums(d 02/22 10:36
3F:→ x88776544pc: f2[x>0,])} else {df2[x>0,]} ) 02/22 10:36
※ 编辑: huangsam (123.51.152.20), 02/22/2018 10:50:38
谢谢x大提供!!!!
※ 编辑: huangsam (123.51.152.20), 02/22/2018 10:53:20
4F:→ x88776544pc: 如果每笔资料都是 unique, 矩阵乘法可以, 没想到 @@ 02/22 11:16
5F:→ x88776544pc: 如果有可能重复的话, 我的结果还要再转置, 忘记了 02/22 11:17
6F:→ huangsam: x大谢谢你啊!!!!!! 02/22 11:22
7F:→ celestialgod: 喔喔,原来我没看懂你要什麽XDD 02/22 19:55