替换R studio中的向量中的字符:for-loops,gsubs?

时间:2014-03-29 03:09:54

标签: r for-loop vector replace gsub

我有一个矢量,大约有8000个字符。这些值适用于体重指数,我需要将{strong> 1 更改为normal 2 更改为overweight 3 for obese,基于以下内容:

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

最快的方法是什么? 我已经研究过for-loops和gsub,但似乎都没有得到正确的工作。 此外,向量具有一些NA值,我需要将其保留为NA。

谢谢!

2 个答案:

答案 0 :(得分:0)

假设您的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)

答案 1 :(得分:0)

一个简单的方法:

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