使用 R 的 cut 函数后如何给出 class 的值

How to give a value of class after using cut function with R

我想用相应的classes的平均值来改变由括号中的两个值定义的class。这是情况: 我正在使用 "cut" 将变量拆分为 10 classes.

data$classe_Ta<-cut(data$Ta,10,include.lowest = TRUE)
table(data$classe_Ta)

结果给出:

    > [-12.4,-7.81] (-7.81,-3.25]  (-3.25,1.31]   (1.31,5.87]   (5.87,10.4]     (10.4,15]     (15,19.6]   (19.6,24.1]   (24.1,28.7]   (28.7,33.3] 
       59           490          2783          6028          7561          7051          5090          1400           211            15 

我想用每个 class 的平均值替换我的数据框中的 [-12.4,-7.81], (-7.81,-3.25]; 这意味着 -10.105, - 5.53 ....需要为每个 class 计算。 任何关于如何做到这一点的建议将不胜感激。 提前致谢!

我们可以使用str_extract提取所有数字元素,将字符串转换为numeric,得到mean

v1 <-  sapply(str_extract_all(levels(data$classe_Ta), 
      "-?[0-9]+(\.[0-9]+)?"), function(x) mean(as.numeric(x)))

data$Mean <- v1[as.numeric(data$classe_Ta)]

数据

set.seed(24)
data <- data.frame(Ta = sample(-50:100, 20, replace=TRUE))
data$classe_Ta<-cut(data$Ta,10,include.lowest = TRUE)