#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