fengl
有一列数据如,100,99,90, 80,60...需要转换。转换规则为:100-90记5分,89-70记4分,...。在R中该如何做,谢了。
潘岚锋
?cut
cloud_wei
?if
?switch
fengl
cut划出的区间好像是均匀的,而我要求,99-100是一个区间,98-90是一个区间,89-75,总之是不均匀的区间。这该如何做?
bjt
cut(x, breaks = , labesl = )
ypchen
我不太明白这个cut函数怎么用? 分割区间以后能做什么呢?
可不可以给个例子?
微微
楼主可能想把数据划分成等级用来评分或者归类,正如谢益辉前辈某篇文提到的数据离散化……楼主是在毁灭信息。
x<-sample(1:100,200,replace=T)
xx<-cut(x,breaks=c(0,50,60,80,100),labels=c(1,2,3,4))
table(xx)
xx<-as.numeric(xx)
cut会把数值型变量转化为因子(话说因子和字符型是什么区别还是很迷糊),所以如果楼主的1、2、3、4、5是有序的,还想拿它做运算,就需要一步as.numeric()
不知道我理解的对不对?
bjt
楼主提的就是一个应用。
就是用 cut 构造了一个简单算法:比对集是 breaks ,输出为 labels。
=======================
微微 说的对。
但,虽然 cut 是在离散化数据,是在损失信息。但只要数据使用者能够容忍损失,也无妨。
比如你的例子:如果我将 breaks 的区间细化到 1 ,那么损失的并不多。
fengl
各位版大,不好意思,做实验去了,回复的晚了点。事情是这样的,数据本来就是离散化的,是冠脉的狭窄程度,比如100%,90%,而文献采用的就是把狭窄程度用某种rule编秩。因为狭窄的程度在人群中本来就差异很大,现有编秩(积分)方法的考虑好像都是用的不规则区间。当然编秩会丢失部分信息,但不编秩又该如何进行统计?