我有一个矢量,大约有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。
谢谢!
答案 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