用 R 将列的类数修改为分位数组

Posted

技术标签:

【中文标题】用 R 将列的类数修改为分位数组【英文标题】:Modify the number of classes of a column to quantile groups with R 【发布时间】:2021-03-02 06:20:46 【问题描述】:

我在将列中的数据聚类为 4 个组时遇到了困难,这些组指的是分位数百分比。有人可以帮我吗? 我在下面列出了我不成功的尝试。

第 1 次尝试:

data$Temperatura <- cut(data$Temperatura, breaks = c(96.3, 97.8, 98.7, 100,8),
    labels = c(1,2,3,4))

第 2 次尝试:

data$Temperatura = data.frame(1 = c(96.3, 97.8, 98.7, 100,8))
data$Temperatura <- cut(Temperatura, c(96.3, 97.8, 98.7, 100,8))

尝试第 3 次:

sapply(data, class)
range(Temperatura)
quantile(data$Temperatura)

提前谢谢你!

【问题讨论】:

你的最后一个分位数8 看起来很奇怪,除非我遗漏了什么,否则可能是错误的。 【参考方案1】:

这能满足你的需求吗?

# example data
Temperatura <- runif(30, 90, 110)
# cut by quantile
cTemperatura <- cut(Temperatura,
                    breaks=quantile(Temperatura),
                    labels = as.character(1:4),
                    include.lowest = TRUE)
# display
setNames(round(Temperatura,1), cTemperatura)
#    1     4     3     4     2     1     1     4     3     2     1     1     3     3 
# 92.6 107.2  99.2 108.4  97.5  94.6  92.1 108.9 101.2  95.2  91.0  94.4 104.8 104.0 
#    2     2     1     4     4     2     3     3     4     3     2     2     1     4 
# 96.5  97.5  90.3 107.7 107.0  95.6 106.0 102.9 109.8  98.6  98.4  95.3  90.7 106.7 
#    4     1 
#108.5  93.5 

【讨论】:

以上是关于用 R 将列的类数修改为分位数组的主要内容,如果未能解决你的问题,请参考以下文章

在R中顺序计算列的中位数并将值存储在数据框中

R语言vtreat包自动处理dataframe的缺失值使用分组的中位数来标准化数据列中每个数据的值(和中位数表连接并基于中位数进行数据标化)计算数据列的中位数或者均值并进行数据标准化

R语言分位数计算Percentiles

R语言colSums函数rowSums函数colMeans函数rowMeans函数colMedians函数rowMedians计算dataframe行或者列的加和均值中位数实战

ORA-01440:要修改的列必须为空,以降低精度或小数位数

计算数据集列的百分位数