Как создать функцию тепловой карты, заполненную корреляцией между двумя переменными из набора данных?

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

Затем я хочу, чтобы все коэффициенты отображались на тепловой карте.

Это схема набора данных и то, что я хочу включить в тепловую карту.

Как мне отредактировать свою функцию, чтобы она циклически перебирала набор данных и могла вычислять коэффициент корреляции между всеми столбцами и отображать значение на тепловой карте? Сначала я пытаюсь создать пустой фрейм данных со всеми нулями, а затем хочу, чтобы он заполнил все значения.

master <- read.table("~/Desktop/Heatmap Project/master.txt", sep = "\t", header = T, stringsAsFactors = F)

vector_a <- master$Median_A
vector_b <- master$Median_B

heatmap_prep <- function(vector_a,vector_b){
    dummy <- as.data.frame(matrix(0, ncol=length(vector_b), nrow=length(vector_a))
    for (i in 1:length(vector_a)){
        first_number <- vector_a[i]
        for(j in 1:length(vector_b)){
            second_number <- vector_b[j]
            result <- cor(vector_a,vector_b)
            dummy [i,j] <- result

        }
    }
    return(dummy)
}

heatmap_data_matrix <- as.matrix(heatmap_prep(vector_a,vector_b))

#Create heatmap:
library(stats)
library(gplots)
library(RColorBrewer)
heatmap(heatmap_data_matrix,Colv = NA, Rowv=NA, revC=T, scale='none', xlab= "B", ylab= "A", main = "Heatmap", col = rev(brewer.pal(11,"RdBu")))

Большое спасибо!


person Julio Lopez    schedule 18.06.2018    source источник
comment
Можете ли вы опубликовать свой фрейм данных здесь? Сколько у него столбцов?   -  person Workhorse    schedule 18.06.2018
comment
Google r добавьте корреляцию тепловой карты текстовых значений, а затем выберите свой инструмент.   -  person Henrik    schedule 18.06.2018
comment
Он имеет 140 столбцов @Workhorse   -  person Julio Lopez    schedule 18.06.2018


Ответы (1)


Следующий код должен предоставить минимальный рабочий пример того, что вы предоставили.

df <- data.frame("A" = c(12,13,15),
                 "B" = c(15,34,15),
                 "C" = c(16,34,56),
                 "D" = c(455,55,45),
                 "E" = c(78,67,65),
                 "F" = c(67,67,56),
                 "G" = c(67,45,64),
                 "H" = c(56,54,56),
                 "I" = c(56,89,90))

library(reshape2)
melted_cor <- melt(cor(df))
library(ggplot2)
ggplot(data = melted_cor, aes(x=X1, y=X2, fill=value)) + 
  geom_tile()

плитка

Здесь это объясняется более подробно: http://www.sthda.com/english/wiki/ggplot2-quick-correlation-matrix-heatmap-r-software-and-data-visualization

person M.Punt    schedule 18.06.2018