R语言cut()函数使用
cut()
切割将x的范围划分为时间间隔,并根据其所处的时间间隔对x中的值进行编码。
参数:breaks:两个或更多个唯一切割点或单个数字(大于或等于2)的数字向量,给出x被切割的间隔的个数。
breaks
采用fivenum():返回五个数据:最小值、下四分位数、中位数、上四分位数、最大值。
labels
为区间数,打标签
ordered_result 逻辑
结果应该是一个有序的因素吗?
先用fivenum求出5个数,再用labels为每两个数之间,贴标签,采用(]的区间, 再将各个数,对应区间,求出即可
>j1<-c(23,62,72,80,59,82,90,43,94) break1<-fivenum(j1) > break1 [1] 23 59 72 82 94 > labels = c("差", "中", "良", "优") > j2<-cut(j1,break1,labels,ordered_result = T) > j2 [1] <NA> 中 中 良 差 良 优 差 优 Levels: 差 < 中 < 良 < 优
补充:R语言中使用CUT函数将数据进行分段重编码
在很多SCI论文中,都会把连续变量进行分段比较,如年龄分为青年、中年、老年,或者把某一指标连续高,中,低分为几等分再进行性分析,如下图所示,把连续的孕周通过认为的分为早孕、中孕和晚孕
在R语言中,实现这种方法,我们需要把连续变量进行分段(也叫分箱)然后进行重编码对数据进行分析,这一步很重要,这是为后面的分析做准备。今天我们通过使用R语言自带的CUT函数来演示对数据的分段重编码及数据整理。
我们今天使用SPSS软件自带的Breast cancer surviva的数据资料为演示,先打开Rstudiu把数据导入,并且删除缺失值
library(foreign)#导入foreign包 bc <- read.spss(“E:/r/Breast cancer survival agec.sav”, use.value.labels=F, to.data.frame=T) bc <- na.omit(bc)
查看一下该数据
head(bc)
第二个指标是年龄,我们打算把年龄平局分为高中低三个区间
age1<-cut(bc$age,breaks = 3,labels = c(1,2,3))#平均分为3个区间,命名为1,2,3
dc<-cbind(bc,age1)#把变量加入表格
这样就把年龄进行了分组重编码。我们还可以对具体年龄段进行分组
age2<-cut(bc$age,breaks=c(0,20,60,100),include.lowest=T, labels = c(1,2,3))#把age划分为0-20,20-60,60到100这样3个区间 dd<-cbind(bc,age2)#把变量加入表格
也可以按百分位比把年龄进行分段
age3<-quantile(bc$age,c(0,.25,.50,.75,1)) dc<-cbind(bc,age3)#把变量加入表格
以上为个人经验,希望能给大家一个参考,也希望大家多多支持好代码网。如有错误或未考虑完全的地方,望不吝赐教。