Я начал эту тему на Code Review и попросил кросс-постинг, потому что (по сравнению со StackOverflow) у Code Review мало dplyr и tidyverse пользователей.Пожалуйста, не стесняйтесь подавлять эту тему, если она не подходит для этого сообщества!Но если все в порядке, взгляните на этот набор данных.«А» и «b» используются для того, чтобы можно было различать, когда измерялась одна и та же переменная.В этом случае X1a и X1b обращаются к одной и той же переменной, но «a» было (предположим ..) в прошлом году, а «b» было в этом году.
У меня есть конкретная цель!Я хочу соотнести «а» и «б» и построить его.Ось X имеет имя переменной (1, 2, 3 и т. Д.), А ось Y имеет результат корреляции.
Поддельные данные, которые я создал, чтобы помочь мне прояснить этот вопрос, и код, который я разработал, следующие:
all_items <- data.frame("1a" = sample(1:5),
"2a" = sample(1:5),
"3a" = sample(1:5),
"1b" = sample(1:5),
"2b" = sample(1:5),
"3b" = rep(sample(1:5),10))
#matrix with correlation
all_correlation <- cor(all_items, method = "spearman") %>%
as.data.frame()
#filter
all_correlation <- all_correlation %>% select(-c(ends_with("a"))) #columns
#create a colum with the now name
all_correlation <- all_correlation %>%
mutate(item = row.names(.)) %>% select(item, everything())
#supress some rows
all_correlation <- all_correlation %>% filter(!grepl("b", item))
#filter(stringr::str_detect(row.names(.), "b"))
#get only the diagonal
all_correlation <- data.frame(item=1:3,Result=diag(as.matrix(all_correlation[, -1])))
#P Value
all_correlation_p_value <- Hmisc::rcorr(as.matrix(all_items))$P %>% as.data.frame()
#filter
all_correlation_p_value <- all_correlation_p_value %>% select(-c(ends_with("a")))
all_correlation_p_value <- all_correlation_p_value %>% mutate(item = row.names(.)) %>% select(item, everything())
all_correlation_p_value <- all_correlation_p_value %>% filter(!grepl("b", item))
all_correlation_p_value <- data.frame(item=1:3,P_Valor=diag(as.matrix(all_correlation_p_value[, -1])))
#General table with the correlation results
all_correlation <- right_join(all_correlation,all_correlation_p_value, by = "item")
#Plot
ggplot(all_correlation, aes(x=item, y=Result)) +
geom_point(aes(color=Result)) +
geom_line() +
annotate("text", x = all_correlation$item,
y=all_correlation$Result,
label = paste("P-value =",round(all_correlation$P_Valor,3)), hjust = -0.1, colour = "red") +
scale_x_continuous(breaks = seq(1,3,1))
Спасибо.