在SAS 中用Cluster 过程分类的时候经常会出现这样的情况,比如有460个元素需要分类,但是在用完Cluster之后分类出来的表是这样的
省略一大串表之后。。。。。。。
并且不显示谱系图,因为分类太多了谱系图画不开,SAS就自动默认不画了。但是如果想知道这里面每一类里面都有什么元素要怎么办呢?比如CL10里面都有什么,一个一个数太麻烦了。所以我写了一个小程序帮助大家解决这个问题。
这是一个R程序
data<-read.table("C:\\Users\\Eleanor......")
a<-as.matrix(data)
cl<-function(x,y){
d<-numeric(0)
m=2
i=1
n=0
d[1]=x+1-y#x is the total elements number#
while(i<=length(d)){
b<-str_extract_all(a[d,1],"[A-Z]+")
c<-str_extract_all(a[d,2],"[A-Z]+")
if(b=="CL"){
d[m]<-x+1-as.numeric(str_extract_all(a[d,1],"[0-9]+"))
m=m+1
}else{
print(a[d,1])
n=n+1
}
if(c=="CL"){
d[m]<-x+1-as.numeric(str_extract_all(a[d,2],"[0-9]+"))
m=m+1
}else{
print(a[d,2])
n=n+1
}
i=i+1
}
print(n)#n is the count of elements in CLy#
}
红字部分设置成自己文件的地址即可。
在运行这个程序前,需要复制粘贴SAS 出来的结果,就是那个表的前两列,复制到EXCEL表格A,B列里。当然多复制也是没有问题的。注意:不能包含中文!!!!
在RStudio里面运行Run以上代码。然后比如你想知道CL10类里面都有什么就输入
cl(10)
然后结果就会出来了,包括里面的元素,和元素的总数。但是此代码弊端就是每一个元素上面都会显示V1或者V2,这些东西都不用管,只是列名称,时间着急没有做的很精致,有R玩家能帮我修改请楼下回帖,不胜感激。
至于想去掉这些V1,V2就复制粘贴结果到excel然后去掉双引号,替换掉V1,V2就可以了,具体方法就上度娘查excel的用法吧,都很简单,就不多说了。
觉得好用的请回复1,不好的请回复0并附上您的建议。
以后还会写更多的小代码~