【问题标题】:Select variables in one data frame to plot from another选择一个数据框中的变量以从另一个数据框中绘制
【发布时间】:2018-08-18 12:08:48
【问题描述】:

我有大量数据集,我正在对相关性进行探索性筛选。我想做一个相关性测试来识别显着相关的变量,然后将这些变量相互绘制。

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 对,其中原始数据在 data 中。

【问题讨论】:

  • 自动化到底是什么意思?
  • 我想自动选择要从数据中绘制的变量。因此,我将自动生成 a 与 b 和 b 与 c 的图表(对于真正的大型数据集,还有数百个)。

标签: r loops dataframe plot


【解决方案1】:

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

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])))
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-05
    • 1970-01-01
    • 2019-04-04
    • 2021-07-27
    • 2023-01-07
    • 1970-01-01
    相关资源
    最近更新 更多