r - 尝试使用 R 中的多个 if else 语句创建新列
问题描述
我想创建一个新列,将一个人的 BMI 分类为某些类别。
我不确定我哪里出错了:
brfss2013 <- brfss2013 %>%
mutate(bmi_class = if (X_bmi5 < 18.5) {
X_bmi5 == 'underweight'}
else if (X_bmi5 in range(18.5,24.9)){
X_bmi5 =='normal'}
else if (X_bmi5 in range(25,29.9)) {
X_bmi5 =='overweight'}
else if (X_bmi5 in range(30,34.9)){
X_bmi5 =='class 1 obesity'}
else if (X_bmi5 in range(35,39.9)){
X_bmi5 =='class 2 obesity'
else if (X_bmi5 > 39.9){
X_bmi5 == 'class 3 obesity')}
else 'NA')
解决方案
@joran 已经提到过cut
功能。所以这里是代码:
# Fake data
brfss2013 <- data.frame(X_bmi5 = rnorm(30, 28, 5))
labels <- c('underweight', 'normal', 'overweight',
'class 1 obesity', 'class 2 obesity', 'class 3 obesity')
breaks <- c(0, 18.5, 24.9, 29.9, 34.9, 39.9, 1000)
brfss2013 <- brfss2013 %>%
mutate(brfss2013 = cut(X_bmi5, breaks = breaks,
labels = labels, include.lowest = TRUE))
推荐阅读
- python - Etsy API ListingVariationImage 端点期望 value_id 与已知 value_id 不同
- c# - C# 动态加载程序集并使用它然后卸载它
- javascript - 在嵌套的 Promise 中调用 resolve 之前执行的 Promise then()
- python - \x00 在 .txt 文件的开头
- arrays - 在数组中查找最大元素 - 程序无法识别最后一个元素
- javascript - 如果在谷歌地图的搜索框中复制粘贴地址,位置不会改变
- biztalk - 设置段的默认值
- django - 如何在 django 中使用 only() 方法
- sql - aws athena SQL 查询;为每个唯一的 column1 获取 column2 的唯一计数
- android - 无法实例化片段 com.nisarg.locsav.PhotoGallery:找不到片段构造函数