R将连续变量转换为分类变量

R converting continuous variable to categorical

我有一列连续数值 (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]  

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

如果您 运行 代码一步一步进行,它将帮助您理解。

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