首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中MICE包的被动补偿语法

R中MICE包的被动补偿语法
EN

Stack Overflow用户
提问于 2021-10-02 18:14:54
回答 2查看 102关注 0票数 0

假设我们有一个数值变量age,它有时会丢失。在使用它来预测其他变量时,我们希望考虑到非线性,因此我们创建了age_factor。我们应该被动地归因于age_factorhttps://www.gerkovink.com/miceVignettes/Passive_Post_processing/Passive_imputation_post_processing.html

但是语法是如何工作的呢?类似于:

代码语言:javascript
复制
method["age_factor"] <- "~ 18_34 if age <= 34,
                           35_49 if age <= 49... "

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2021-10-02 21:10:35

为什么你不能这样做呢:

代码语言:javascript
复制
age_factor <- function(x){
     if (x <= 34) {
         y <- "18_34"
     } else {
         y <- "35_49"
     }
return(y)    
}

age_factor(32)
[1] "18_34"
票数 0
EN

Stack Overflow用户

发布于 2021-10-22 08:06:28

使用与您编写的语法相近的语法:

代码语言:javascript
复制
method["age_factor"] <- "~ ifelse(is.na(age), NA,  
   ifelse(age < 20, 'under 20', 
   ifelse(age < 25, '20 to 24', 
   ifelse(age < 35, '25 to 34',
   '35 and over'))))"

注意:我在可能的结果中包括了NA,因为估算有时会返回NA。(此外,您需要将因子级别名称括在单引号中,因为表达式作为一个整体包含在双引号中,否则R将认为您的age_factor代码过早结束。)

但是--在这种情况下,我会避免使用ifelse(),而更倾向于使用cutr::smart_cut(),因为它的简单性和抵抗难以发现的语义错误:

代码语言:javascript
复制
require(cutr)
cuts <- c(-Inf, 20, 25, 35, Inf)
imp$age_factor <- with(imp, smart_cut(age, cuts, 
    labels = c('under 20', '20 to 24', '25 to 34', '35 and over'), output = "factor"))

注意:参数output = " factor“将给出一个无序因子;您可以将其设置为其他值,例如有序因子、整数等。

祝您工作愉快!:-)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69419061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档