在使用dplyr::mutate代码时,如何对一系列数字进行编码?
我想问是否有人知道如何解决我的问题:在使用dplyr::mutate代码时,如何对一系列数字进行编码?,r,dplyr,mutate,R,Dplyr,Mutate,我想问是否有人知道如何解决我的问题: ` master1<- master %>% mutate(underweight=BMI<18.5, normal=BMI%in%c(18.5,24.9), overweight=BMI%in%c(25,29.9), obese=BMI%in%c(30,34.9), extreme=BMI>35) ` `master1% 突变(体重不足=BMI35)`
` master1<- master %>%
mutate(underweight=BMI<18.5,
normal=BMI%in%c(18.5,24.9),
overweight=BMI%in%c(25,29.9),
obese=BMI%in%c(30,34.9),
extreme=BMI>35) `
`master1%
突变(体重不足=BMI35)`
我想创建一种新的列。。对于体重不足和极度肥胖,它起作用,但对于正常、超重和肥胖,我想我编码的数字范围是错误的…百分比中的
%in%
将只检查精确值。由于这些是浮点数,因此也可能不匹配。这里,我们可能需要比较运算符(
与&
)或在之间使用
library(dplyr)
master1 <- master %>%
mutate(underweight = BMI < 18.5,
normal = between(BMI, 18.5, 24.9),
overweight = between(BMI, 25, 29.9),
obese = between(BMI, 30, 34.9),
extreme = BMI > 35))
库(dplyr)
大师1%
突变(体重不足=体重指数<18.5,
正常=介于(BMI,18.5,24.9)之间,
超重=介于(BMI,25,29.9),
肥胖=介于(BMI,30,34.9)之间,
极限值=体重指数>35)
我创建了一个可复制的示例(reprex)来帮助解释,并使用了包{dplyr}:
library(dplyr)
# Create data frame for 34 subjects
# and add a column with random numbers for weight between 15 and 34
master1 <- data.frame(
subjects = sample(1:34)
) %>%
mutate(BMI = runif(34, min = 15, max = 34),
BMI = round(BMI, digits = 1)) # rounds to 1 digit
库(dplyr)
#为34个主题创建数据框
#并添加一列,其中随机数的权重介于15和34之间
大师1%
突变(BMI=runif(34,最小值=15,最大值=34),
体重指数=四舍五入(体重指数,位数=1))#四舍五入为一位数
重新编码时,最好将其重新编码到一列,这称为长表单数据:
# Create a column called category with the labels for the weight groups
master1 <- master1 %>%
category = case_when(BMI <= 18.5 ~ "underweight",
BMI >= 18.5 & BMI <= 24.9 ~ "normal",
BMI >= 25 & BMI <= 29.9 ~ "overweight",
BMI >= 30 & BMI <= 34.9 ~ "obese",
BMI >= 35 ~ "extreme",
TRUE ~ NA_character_ # Just in case anything is # outside of these numbers this will return an NA which means nothing was entered
))
#创建一个名为category的列,其中包含权重组的标签
大师1%
类别=情况(BMI=18.5&BMI=25&BMI=30&BMI=35~“极端”,
TRUE~NA_character_35;以防万一,这些数字之外的任何内容都将返回NA,这意味着未输入任何内容
))
请用dput
显示一个小的可复制示例,预期输出%in%
用于精确匹配。我猜你在找dplyr::between()
请不要破坏你的帖子,为别人做更多的工作。通过在Stack Exchange网络上发布,您已授予Stack Exchange在下不可撤销的权利,以分发该内容(即,无论您未来的选择如何)。根据堆栈交换策略,帖子的非破坏版本是分发的版本。因此,任何故意破坏行为都将恢复原状。如果您想了解有关删除帖子的更多信息,请参阅: