两个数据帧

问题描述:

之间的所有成对列散点图可以说我有2个数据帧:两个数据帧

df1 = data.frame(a = rnorm(10), b = rnorm(10), c = rnorm(10)) 
df2 = data.frame(d = rnorm(10), e = rnorm(10)) 

我想看看所有成对散点图之间的数据帧:

即:六个散点图:a与d,a与e,b与d,b与e,c与d,c与e。

我怎么能做到这一点?我注意到,pairs做这行单data.frame

使用cbind两个DFS合并,然后用plot()

df1 = data.frame(a = rnorm(10), b = rnorm(10), c = rnorm(10)) 
df2 = data.frame(d = rnorm(10), e = rnorm(10)) 


df <- cbind(df1, df2) 

plot(df) 

enter image description here

如果你想创建两个data.frames之间只图(无自我比较),你可以循环他们:

par(mfrow = c(ncol(df1), ncol(df2))) 


for(i in 1:ncol(df1)){ 
    for(j in 1:ncol(df2)){ 
    plot(df1[,i], df2[,j], main = paste(names(df1)[i], "vs", names(df2)[j]), 
     ylab = names(df2)[j], 
     xlab = names(df1)[i]) 
    } 
} 

enter image description here

+1

或只是'C(DF1,DF2)' – mtoto

漂亮(不必要的复杂?)tidyverse/ggplot2解决方案。

重新组织数据:

library(dplyr) 
library(tidyr) 
mfun <- function(x,label="df1") { 
    x %>% 
     mutate(obs=seq(n())) %>% ## add obs numbers 
     gather(key=var,value=value,-obs) ## reshape 
} 
## combine 
df12 <- mfun(df1) %>% full_join(mfun(df2),by="obs") 

简介:

library(ggplot2); theme_set(theme_bw()) 
ggplot(df12,aes(value.x,value.y)) + 
    geom_point()+ 
    facet_grid(var.x~var.y)+ 
    theme(panel.margin=grid::unit(0,"lines")) ## squash panels together 

enter image description here