Создание таблиц корреляции одного столбца относительно другого для различных подмножеств и групп

#r #datatable #subset #apply #correlation

Вопрос:

У меня есть следующие данные.таблица, с которой мне действительно не помешала бы помощь в манипулировании:

 uhourse forborn female numchild female_numchild_interaction hs somecol college advanced rw rw_squared race  1: NA 0 1 0 0 1 0 0 0 NA NA 1  2: NA 0 0 0 0 0 0 1 0 NA NA 1  3: NA 0 1 3 3 1 0 0 0 13.00000 169.0000 1  4: 35 0 0 0 0 0 0 0 1 17.80200 316.9112 1  5: 60 0 1 0 0 0 0 0 1 19.23067 369.8185 1  ---  903707: NA 0 1 NA NA 0 1 0 0 NA NA 4 903708: NA 0 1 0 0 1 0 0 0 12.51526 156.6317 4 903709: NA 0 0 0 0 1 0 0 0 NA NA 4 903710: NA 0 1 NA NA 0 1 0 0 NA NA 1 903711: NA 0 0 NA NA 1 0 0 0 NA NA 1  First_Q_by_Race Second_Q_by_Race Third_Q_by_Race  1: 14.07967 20.85876 32.63074  2: 14.07967 20.85876 32.63074  3: 14.07967 20.85876 32.63074  4: 14.07967 20.85876 32.63074  5: 14.07967 20.85876 32.63074  ---  903707: 14.00000 22.24033 38.92812 903708: 14.00000 22.24033 38.92812 903709: 14.00000 22.24033 38.92812 903710: 14.07967 20.85876 32.63074 903711: 14.07967 20.85876 32.63074   

Соответствующие столбцы для этой задачи следующие:

  • rw: заработная плата
  • First_Q_by_Race: Заработная плата за 1-й квартиль этой гонки
  • Second_Q_by_Race: Заработная плата за 1-й квартиль этой гонки
  • Third_Q_by_Race: Заработная плата за 1-й квартиль этой гонки
  • Гонка: принимает значение от 1 до 5

Я хочу найти корреляцию переменной uhourse с каждым другим столбцом. Тем не менее, я хочу сделать это для всех комбинаций расы и во всех квартилях. Вот как я хочу, чтобы это было сделано, но я могу понять, как это делать только по одному за раз

 # Correlation for whites in the lowest wage quartile  data_subset_white_Q1 lt;- cps_data[ rw lt; First_Q_by_Race, columns_of_interest, with=FALSE] data_cor_values_white_Q1 lt;- data_subset_white_Q1[, .(Correlation_to_uhourse = cor(.SD, uhourse, use="complete.obs"))] data_cor_values_white_Q1[, variable := columns_of_interest] data_cor_values_white_Q1   data_subset_white_Q2 lt;- cps_data[rw lt; Second_Q_by_Race amp; rw gt; First_Q_by_Race amp; race == 1, columns_of_interest, with=FALSE] data_cor_values_white_Q2 lt;- data_subset_white_Q1[, .(Correlation_to_uhourse = cor(.SD, uhourse, use="complete.obs"))] data_cor_values_white_Q2[, variable := columns_of_interest] data_cor_values_white_Q2  

Вывод выглядит так: `data_subset_white_Q1:1

 Correlation_to_uhourse.V1 variable  1: 1.000000000 uhourse  2: 0.005708719 forborn  3: -0.201430559 female  4: 0.032083611 numchild  5: -0.097661451 female_numchild_interaction  6: 0.044158927 hs  7: -0.024385303 somecol  8: -0.043407221 college  9: 0.014576303 advanced 10: 0.094930236 rw 11: 0.113389503 rw_squared 12: NA race  

I want 20 of these tables, for every combination of 4 quartiles (1st quartile: rw lt; First_Q_by_Race. 2nd quartile: rw gt; First_Q_by_Race amp; rw lt; Second_Q_by_Race. 3rd quartile: rw gt; Second_Q_by_Race amp; rw lt; Third_Q_by_Race. 4th quartile: rw gt; Third_Q_by_Race) with the 5 races (1:5). 4 quartiles * 5 races = 20 tables. Unfortunately I can not find a way to do so without making 20 separate tables and repeating this code multiple times