在一个数据框中选择变量以从另一个数据框绘制

时间:2018-03-09 20:46:54

标签: r loops dataframe plot

我有大型数据集,我正在进行相关性的探索性筛选。我想进行相关性测试以识别显着相关的变量,然后将这些变量相互映射。

data <- data.frame(a = 1:10, b = c(1.5*(1:9), 10), c = 2*(1:10), d = sample(1:5, 10, replace = T))
cor_data <- corr.test(data)

sig_cor <- ifelse(cor_data$p <0.05, cor_data$r, NA)

sig_cor_long <- sig_cor %>% 
  data.frame() %>% 
  mutate(var1 = rownames(sig_cor)) %>% 
  gather(var2, value = r, -var1) %>% 
  drop_na(r) %>% 
  filter(r != 1)

这标识对a-b和b-c显着相关,所以我想绘制那些。如何自动选择从sig_cor_long中选择配对变量的过程,从数据中通过ggplot进行绘图?我想为每个相关对创建的示例图是:

ggplot(data, aes(a, b)) +
geom_smooth(method = 'lm')+
geom_point(shape = 21, color = 'darkblue', fill = 'white')

我希望有一个函数输入到ggplot中,告诉它绘制sig_cor_long中标识的所有var1和var2对,原始数据都是数据。

1 个答案:

答案 0 :(得分:0)

好的,这是一种绘图的方法,例如所有具有显着相关性的图(在列表中,因此您可以对它们做任何事情)

do.call(gridExtra::grid.arrange,
  ifelse(cor_data$p <0.05, cor_data$r, NA) %>%
    as.data.frame() %>%
    rownames_to_column() %>%
    gather(pair, val, -rowname) %>%
    drop_na() %>%
    filter(val != 1) %$%
    map2(rowname, pair, ~ggplot() + geom_smooth(method = "lm", aes(data[, .x], data[, .y])) + geom_point(aes(data[, .x], data[, .y])))
)