按名称相似的列将数据帧拆分为较小的数据帧

问题描述 投票:0回答:1

我有一个包含469列和1107个观测值的数据集。

我想针对每个不良事件组将数据帧拆分为较小的数据帧。换句话说,所有具有“内分泌”的列名将在一个数据帧中,所有具有“ blood_lymphatic”的列名将在另一数据帧中。

下面显示数据框中的前54列名称。

谢谢你!

head(df)
  [1]"rc_id"                                   "dlt_1"                                 
  [3] "soc_1"                                  "ae_blood_lymphatic_1"                  
  [5] "ae_endocrine_1"                         "ae_gastrointestinal_1"                 
  [7] "ae_general_admin_site_condition_1"      "ae_infections_infestations_1"          
  [9] "ae_investigations_1"                    "ae_metabolism_nutrition_1"             
 [11] "ae_musculoskeletal_connect_tissue_1"    "ae_psychiatric_1"                      
 [13] "ae_skin_subcutaneous_tissue_1"          "ae_2"                                  
 [15] "dlt_2"                                  "soc_2"                                 
 [17] "ae_blood_lymphatic_2"                   "ae_cardiac_2"                          
 [19] "ae_eye_2"                               "ae_gastrointestinal_2"                 
 [21] "ae_general_admin_site_condition_2"      "ae_infections_infestations_2"          
 [23] "ae_injury_poison_proce_complic_2"       "ae_metabolism_nutrition_2"             
 [25] "ae_musculoskeletal_connect_tissue_2"    "ae_psychiatric_2"                      
 [27] "ae_renal_uninary_2"                     "ae_respiratory_thoracic_mediastinal_2" 
 [29] "ae_skin_subcutaneous_tissue_2"          "ae_social_circumstances_2"             
 [31] "ae_vascular_2"                          "ae_3"                                  
 [33] "dlt_3"                                  "soc_3"                                 
 [35] "ae_blood_lymphatic_3"                   "ae_gastrointestinal_3"                 
 [37] "ae_general_admin_site_condition_3"      "ae_investigations_3"                   
 [39] "ae_metabolism_nutrition_3"              "ae_nervous_system_3"                   
 [41] "ae_renal_uninary_3"                     "ae_respiratory_thoracic_mediastinal_3" 
 [43] "ae_4"                                   "dlt_4"                                 
 [45] "soc_4"                                  "ae_blood_lymphatic_4"                  
 [47] "ae_gastrointestinal_4"                  "ae_general_admin_site_condition_4"     
 [49] "ae_infections_infestations_4"           "ae_investigations_4"                   
 [51] "ae_metabolism_nutrition_4"              "ae_musculoskeletal_connect_tissue_4"   
 [53] "ae_psychiatric_4"                       "ae_respiratory_thoracic_mediastinal_4" 
r dictionary split tidyverse purrr
1个回答
0
投票
library(tidyverse) d <- tribble(~endocrine1, ~endocrine2, ~blood_lymphatic1, ~blood_lymphatic2, 1, 2, 3, 4) df_vec <- c("endocrine", "blood_lymphatic") map(df_vec, ~d %>% select(contains(.x))) %>% set_names(df_vec) -> want # [[1]] # # A tibble: 1 x 2 # endocrine1 endocrine2 # <dbl> <dbl> # 1 1 2 # # [[2]] # # A tibble: 1 x 2 # blood_lymphatic1 blood_lymphatic2 # <dbl> <dbl> # 1 3 4
© www.soinside.com 2019 - 2024. All rights reserved.