#r #dplyr #correlation #p-value #r-corrplot
Вопрос:
У меня есть вопрос о получении значений корреляции и p-значений в R с использованием library(corrplot)
. У меня есть матрица с образцами в виде строк и признаками (генами) в виде столбцов. Сначала я хотел бы вычислить медиану каждой функции (по столбцам) и сохранить их, затем связать их с помощью rbind()
функции с исходной матрицей. После этого;
- Вычислите корреляцию Пирсона для каждого признака (гена) во всех выборках с соответствующими медианными значениями во всех выборках и сохраните ее как корреляцию.
- Рассчитайте значение p для каждого признака (гена) во всех образцах с соответствующими медианными значениями во всех образцах и сохраните его как значение p или T-критерий.
Вот входные данные и ожидаемые результаты результаты:
Ввод
library(corrplot) dput(df) structure(list(Sample_1 = c(16.26875, 16.26875, 30.8274, 111.2367, 111.2367, 111.2367, 35.3882, 41.27, 31.7941, 31.7941), Sample_2 = c(21.374, 21.374, 112.1106, 252.9354, 252.9354, 252.9354, 53.4914, 24.0781, 51.24006667, 51.24006667), Sample_3 = c(35.7917, 35.7917, 126.3887, 215.32245, 215.32245, 215.32245, 88.0871, 86.3814, 40.5937, 40.5937 ), Sample_4 = c(21.01615, 21.01615, 104.7907, 112.6046, 112.6046, 112.6046, 56.443, 41.8651, 27.23903333, 27.23903333), Sample_5 = c(22.5471, 22.5471, 122.3795, 203.8146, 203.8146, 203.8146, 63.7323, 65.2544, 33.96723333, 33.96723333), Sample_6 = c(53.78655, 53.78655, 90.0362, 283.54685, 283.54685, 283.54685, 49.4972, 145.7944, 63.5719, 63.5719), Sample_7 = c(8.2572, 8.2572, 50.6777, 153.041325, 153.041325, 153.041325, 37.0928, 77.7312, 31.3466, 31.3466), Sample_8 = c(11.24755, 11.24755, 100.9305, 176.373225, 176.373225, 176.373225, 53.0731, 36.7819, 49.88686667, 49.88686667)), class = "data.frame", row.names = c("Gene_A", "Gene_B", "Gene_C", "Gene_D", "Gene_E", "Gene_F", "Gene_G", "Gene_H", "Gene_I", "Gene_J")) ###Calculate the median for each column in the dataframe### df_median lt;- apply(df,2,median) ###Rename the rowname in dataframe### df_median lt;- as.data.frame(df_median) df_median lt;- t(df_median) rownames(df_median)[rownames(df_median) == "1"] lt;- "Median_value" df_median lt;- as.matrix(df_median) dput(df_median) structure(c(33.59115, 52.365733335, 87.23425, 49.15405, 64.49335, 76.80405, 43.88525, 51.479983335), .Dim = c(1L, 8L), .Dimnames = list( "df_median", c("Sample_1", "Sample_2", "Sample_3", "Sample_4", "Sample_5", "Sample_6", "Sample_7", "Sample_8"))) ###Check if the columns of the data are the same order### all(colnames(df)==colnames(df_median)) ###Row bind### df_v1 lt;- rbind(df, df_median) ###Transpose### df_v1 lt;- t(df_v1) dput(df_v1) structure(c(16.26875, 21.374, 35.7917, 21.01615, 22.5471, 53.78655, 8.2572, 11.24755, 16.26875, 21.374, 35.7917, 21.01615, 22.5471, 53.78655, 8.2572, 11.24755, 30.8274, 112.1106, 126.3887, 104.7907, 122.3795, 90.0362, 50.6777, 100.9305, 111.2367, 252.9354, 215.32245, 112.6046, 203.8146, 283.54685, 153.041325, 176.373225, 111.2367, 252.9354, 215.32245, 112.6046, 203.8146, 283.54685, 153.041325, 176.373225, 111.2367, 252.9354, 215.32245, 112.6046, 203.8146, 283.54685, 153.041325, 176.373225, 35.3882, 53.4914, 88.0871, 56.443, 63.7323, 49.4972, 37.0928, 53.0731, 41.27, 24.0781, 86.3814, 41.8651, 65.2544, 145.7944, 77.7312, 36.7819, 31.7941, 51.24006667, 40.5937, 27.23903333, 33.96723333, 63.5719, 31.3466, 49.88686667, 31.7941, 51.24006667, 40.5937, 27.23903333, 33.96723333, 63.5719, 31.3466, 49.88686667, 33.59115, 52.365733335, 87.23425, 49.15405, 64.49335, 76.80405, 43.88525, 51.479983335), .Dim = c(8L, 11L ), .Dimnames = list(c("Sample_1", "Sample_2", "Sample_3", "Sample_4", "Sample_5", "Sample_6", "Sample_7", "Sample_8"), c("Gene_A", "Gene_B", "Gene_C", "Gene_D", "Gene_E", "Gene_F", "Gene_G", "Gene_H", "Gene_I", "Gene_J", "df_median")))
Ожидаемый результат (значения корреляции и p-значения); выполняется в excel
dput(df_v1) structure(list(Correlation = c(0.784222027, 0.784222027, 0.697165536, 0.703786264, 0.703786264, 0.703786264, 0.809199894, 0.652444083, 0.470900098, 0.470900098), `pvalue_[Ttest (tail = 2; equal var = 2) from MS Excel]` = c(0.001025688, 0.001025688, 0.022663236, 5.29e-05, 5.29e-05, 5.29e-05, 0.750705502, 0.628163911, 0.053826725, 0.053826725), `pvalue-[Ttest (tail = 2; unequal var = 3) from MS Excel]` = c(0.001095952, 0.001095952, 0.027396657, 0.000420109, 0.000420109, 0.000420109, 0.750727728, 0.631449141, 0.055895385, 0.055895385)), class = "data.frame", row.names = c("Gene_A", "Gene_B", "Gene_C", "Gene_D", "Gene_E", "Gene_F", "Gene_G", "Gene_H", "Gene_I", "Gene_J"))
Спасибо,
Toufiq