两个数据帧
问题描述:
之间的所有成对列散点图可以说我有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)
如果你想创建两个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])
}
}
答
漂亮(不必要的复杂?)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
或只是'C(DF1,DF2)' – mtoto