Split data frame into smaller data frames from by columns with similar names

biostats_charlene :

I have a data set with 469 columns and 1107 observations.

I would like to split the data frame into smaller data frames for each adverse event group. In other words, all column names that have "endocrine" would be in one data frame, all column names with "blood_lymphatic" would be in another data frame.

Below show the first 54 column names in data frame.

Thank you in advance!

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.user.05apr :

One possibility:

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

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=174079&siteId=1