【问题标题】:Categorising numerical and categorical variables into appropriate ranges in R将数值和分类变量分类到 R 中的适当范围内
【发布时间】:2016-04-01 14:01:01
【问题描述】:
 Df <- bball5
 str(bball5)
 'data.frame':  379 obs. of 9 variables:
 $ ID         : int  238 239 240 241 242 243 244 245 246 247 ...
 $ Sex        : Factor w/ 2 levels "female","male": 1 1 1 1 1 1 1 1 1 1 ...
 $ Sport      : Factor w/ 10 levels "BBall","Field",..: 1 1 1 1 1 1 1 1 1 1 
 $ Ht         : num  196 190 178 185 185 ...
 $ Wt         : num  78.9 74.4 69.1 74.9 64.6 63.7 75.2 62.3 66.5 62.9 ...
 $ BMI        : num  20.6 20.7 21.9 21.9 19 ...
 $ BMIc       : NA NA NA NA NA NA NA NA NA NA ...
 $ Sex_f      : Factor w/ 1 level "female": 1 1 1 1 1 1 1 1 1 1 ...
 $ Sex_m      : Factor w/ 1 level "male": NA NA NA NA NA NA NA NA NA NA ...

我想在一个 1000 的大型数据集中对一组数值变量进行分类。

我需要将 BMI 分为以下范围:

    (<18.50, 18.50-24.99, 24.99-25.00, >=30.00) 

并将它们分别标记为:

  "Underweight" "Normal" "Overweight" "Obese" 

为了绘制表格来展示单独的关系:
$男性 $ 女性
根据运动类型。

我还需要确认计算的 BMI 是否正确完成,因为我发现很难在数据集中为新变量列创建公式

$ BMIc.

变量 (NA) 中有几个缺失值,在每个变量中,如果我创建一个函数来计算新变量,这会给我带来错误

 bball5$BMIc <- bball5$BMI[bball5$BMI, c(bball5$wt/(bball5$Ht)^2 ]

我无法对 BMI 变量进行分类。 我也必须保持 ID 以匹配。

【问题讨论】:

    标签: r variables categorical-data


    【解决方案1】:

    您可以创建一个名为 BMIclass 的变量,然后在其中创建 4 个类别:

    bball5$BMIclass <- "Underweight"
    bball5[which(bball5$BMI>18.5 & ball5$BMI<24.99), 'BMIclass'] <- "Normal"
    bball5[which(bball5$BMI>=24.99 & ball5$BMI<25), 'BMIclass'] <- "Overweight"
    bball5[which(bball5$BMI>=30), 'BMIclass'] <- "Obese"
    bball5$BMIclass <- as.factor(bball5$BMIc)
    

    至于BMIc,您可以这样做(如下)。它仍然会创建一些缺少值的 NA,但它会在有数据的情况下为您提供正确的 BMIc。

    bball5$BMIc <- bball5$wt/bball5$Ht^2
    

    【讨论】:

      【解决方案2】:

      我会使用cut 将 BMI 转换为分类变量。一个关于随机 BMI 向量的例子:

      BMI <- runif(100, 16, 35)
      BMIc <- cut(BMI, breaks=c(0, 18.5, 25, 30, +Inf), 
                  labels=c("Underweight", "Normal", "Overweight", "Obese"))
      

      要检查结果,您可以使用aggregate:

      aggregate(BMI, by=list(BMIc), summary)
      

      最后,新的向量可以通过df$BMIc &lt;- BMIc这样的命令被包含在数据框中...

      【讨论】:

      • 非常感谢!这真的很有帮助,真的很有帮助。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-09
      相关资源
      最近更新 更多