【发布时间】:2018-11-25 17:10:45
【问题描述】:
我从Code Review 开始这个话题并要求交叉发布,因为(与 StackOverflow 相比),Code Review 的 dplyr 和 tidyverse 用户很少。如果这个话题对这个社区来说还不够,请随意压制这个话题!但如果没问题,看看这个数据集。 “a”和“b”用于在测量相同变量时进行区分。在这种情况下,X1a 和 X1b 访问同一个变量,但“a”是(假设..)去年,“b”是今年。
我有一个明确的目标!我想关联“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))
谢谢。
【问题讨论】:
-
据我所知,您提供的链接上的问题已被接受?
-
@Tjebo,是的!谢谢。我会更新
标签: r ggplot2 dplyr correlation tidyverse