R语言中如何生成按level顺序排列的code全组合路径?
生成所有Level对应的Code组合路径
原始数据
dt_original = tibble( level = c("10001","10001","10001","10002","10002","10003","10003","10003","10003","10003","10003"), code = c("L72.3","L70.0","L72.3","D23.5","L70.0","L40.0","L72.3","L70.0","L70.0","L72.3","L40.0") )
解决方法
可以通过dplyr和tidyr包快速实现,步骤如下:
- 按level分组提取每个层级的code集合
- 生成所有层级code的笛卡尔积组合
- 将组合转换为列表格式
具体代码:
# 加载所需包 library(tibble) library(dplyr) library(tidyr) # 按level拆分并提取每个层级的code向量 level_codes <- dt_original %>% group_split(level, .keep = FALSE) %>% lapply(pull) # 生成所有路径组合并转换为列表 all_paths <- expand_grid(!!!setNames(level_codes, unique(dt_original$level))) %>% rowwise() %>% mutate(path = list(c_across(everything()))) %>% pull(path)
结果说明
运行后all_paths就是包含所有36条路径的列表,每条路径是一个包含三个code的向量,比如其中一条为c("L72.3", "D23.5", "L40.0"),和你示例的路径一致。
内容的提问来源于stack exchange,提问作者Ma Yueli
相关产品推荐
相关产品推荐

