R将连续变量转换为类别

时间:2020-05-28 08:45:15

标签: r dataframe categorical-data

我有一列连续的数值(NO2),我需要将其转换为分类值。有人可以解释以下代码如何实现这一目标:

cutpoints <- quantile(dataframe%NO2, seq(0,1,length=4),na.rm=TRUE)  
dataframe%newcol <- cut(dataframe%NO2, cutpoints)  
levels(dataframe%newcols) returns (0.3781,1.2] (1.2,1.42] (1.42,2.55]  

1 个答案:

答案 0 :(得分:1)

我认为您打算使用$而不是%来引用列名。

如果逐步运行代码,它将有助于您理解。

seq创建一个从0到1的序列,长度为4。

seq(0,1,length=4)
#[1] 0.000 0.333 0.667 1.000

quantile将向量以给定概率(此处为seq(0,1,length=4))分解为数据分位数。

set.seed(123)
x <- runif(10)
cutpoints <- quantile(x, seq(0,1,length=4),na.rm=TRUE) 
#    0%  33.3%  66.7%   100% 
#0.0456 0.4566 0.7883 0.9405 

,现在这些中断用于cut数据。

cut(x, cutpoints)

表示我们将x分为不同的组,其中cutpoints[1]-cutpoints[2]是一个组,cutpoints[2]-cutpoints[3]是另一个组,依此类推。

您也可以使用findInterval代替cut