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