【问题标题】:Replacing characters in a vector in R studio: for-loops, gsubs?在 R studio 中替换向量中的字符:for 循环、gsubs?
【发布时间】:2014-05-08 17:19:43
【问题描述】:

我有一个向量,它大约有 8000 个字符。这些值适用于体重指数,我需要将它们更改为 1normal)、2overweight)和 3overweight)和 3 987654323@,基于以下:

<=24.9 Normal,   
25.0—29.9 Overweight,  
30.0+ = Obese.

最快的解决方法是什么? 我已经研究了 for-loops 和 gsub,但似乎都没有完全正确地工作。 此外,该向量有一些 NA 值,我需要保持为 NA。

谢谢!

【问题讨论】:

    标签: r for-loop vector replace gsub


    【解决方案1】:

    假设您的 BMI 值是数字,您可以使用 cut 进行分类(并标记这些值)

    # Data - with a few missing values
    set.seed(1)
    bmi <- rnorm(100,40,10)
    bmi[c(2,10,20)] <- NA
    
    # Categorise
    bmi.cat <- cut(bmi , breaks=c(0 , 25 , 30, max(bmi , na.rm=TRUE)) , 
               labels = c("nornal" , "over", "obese"), 
               right=FALSE, include.lowest=TRUE)
    
    table(bmi.cat , exclude=NULL) # 3 values still missing
    
     # check range of BMI within categories
     by(bmi , bmi.cat , range , na.rm=TRUE)
    

    【讨论】:

      【解决方案2】:

      一个简单的方法:

      myvec[myvec <= 24.9] <- 1
      myvec[myvec > 30] <- 3
      myvec[myvec > 3] <- 2
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-08-15
        • 2014-12-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-01
        • 2017-04-07
        • 1970-01-01
        相关资源
        最近更新 更多