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