用于R中因子类别的多标签格式设置的函数 问题

用于R中因子类别的多标签格式设置的函数 问题,r,function,sas,categorical-data,R,Function,Sas,Categorical Data,在一些健康数据集中,一列可以对个别病例的各种感兴趣的疾病表现进行分类。在一些总结中,将这些表现的各种组合制成表格是有益的,包括计算某一特定病例的关键表现是否“大于”或“小于” 在SAS中,可以为一列指定一个,这样可以在过程步骤期间同时汇总各种重叠类别。我一直在努力在R中找到一个令人满意的解决方案,从SAS复制这个特性。我知道,链接在一起的dplyr或base函数的组合可以制表并附加不同的组合,从而有效地创建一个数据集,该数据集可以复制表示所有属性所需的行 目标 创建一个函数,该函数允许轻松创建考

在一些健康数据集中,一列可以对个别病例的各种感兴趣的疾病表现进行分类。在一些总结中,将这些表现的各种组合制成表格是有益的,包括计算某一特定病例的关键表现是否“大于”或“小于”

在SAS中,可以为一列指定一个,这样可以在
过程步骤期间同时汇总各种重叠类别。我一直在努力在R中找到一个令人满意的解决方案,从SAS复制这个特性。我知道,链接在一起的
dplyr
base
函数的组合可以制表并附加不同的组合,从而有效地创建一个数据集,该数据集可以复制表示所有属性所需的行

目标 创建一个函数,该函数允许轻松创建考虑目标类别的各种重叠级别的数据集。这将允许将下面提供的示例数据转换为附加正确行的新数据集,并可以在组内进行检查,以查看某个分组是否匹配所有需要的级别,这些级别将被视为新分组的一部分

库(TIBLE)
#示例数据(重复组)

exampleData下面的函数提供了一个解决该问题的有效(尽管不美观)方法。我倾向于过度思考过程,这可能反映在这里的答案中

此函数将接收初始数据集,并基于是否提供了分组函数,它将创建一个新的数据集,其中包含聚合因子级别的各种组合的附加行(如果这些级别存在于分组中)。可以以列表的形式提供各种新级别,另外一列可以轻松查看除了原始行之外添加了哪些新级别

#-----------------------------------------------------------#
#为因子组的多级标签创建函数#
#-----------------------------------------------------------#
#target_col是要调整的感兴趣列的字符串
#group_col是列的字符串,用于检查分组中存在的级别
#new_levels是一个使用名称和值对确定如何聚合新级别的列表
#折叠将确保只附加新级别的唯一组合
#track将添加一个标志,以确保您可以轻松看到附加的新组合
创建_multilevelfactor0){35;如果提供的列表中的级别包含不在列中的级别,则抛出错误
停止('列表中的级别与目标列中的级别不匹配')
}
}
#说明是否提供了分组col及其目的
如果(!missing(group_col)){message(paste0('以下列用作汇总多级分解的分组变量:',
group_col'。如果不希望标签由分组中的标签确定,请将参数留空。“))
}
#
#主要
#
#如果需要,为跟踪设置新列

如果(track==T){track_col下面的函数提供了一个有效的,尽管不美观的问题解决方案。我倾向于过度思考过程,这可能反映在这里的答案中

此函数将接收初始数据集,并基于是否提供了分组函数,它将创建一个新的数据集,其中包含聚合因子级别的各种组合的附加行(如果这些级别存在于分组中)。可以将各种新级别作为列表提供,并添加一个列以便于查看哪个级别除了原始行之外,还添加了新的级别

#-----------------------------------------------------------#
#为因子组的多级标签创建函数#
#-----------------------------------------------------------#
#target_col是要调整的感兴趣列的字符串
#group_col是列的字符串,用于检查分组中存在的级别
#new_levels是一个使用名称和值对确定如何聚合新级别的列表
#折叠将确保只附加新级别的唯一组合
#track将添加一个标志,以确保您可以轻松看到附加的新组合
创建_multilevelfactor0){35;如果提供的列表中的级别包含不在列中的级别,则抛出错误
停止('列表中的级别与目标列中的级别不匹配')
}
}
#说明是否提供了分组col及其目的
如果(!missing(group_col)){message(paste0('以下列用作汇总多级分解的分组变量:',
group_col'。如果不希望标签由分组中的标签确定,请将参数留空。“))
}
#
#主要
#
#如果需要,为跟踪设置新列
如果(track==T){track\u col