我对R很新并且搜索了很多但是找不到这个问题的答案。
我有两个格式完全相同的数据框,其中行等于country和columns等于years。我想创建一个散点图,其中数据帧1是X,数据帧2是Y。
例如:
Data frame 1:
1991 1992
USA 1 3
Canada 4 5
Data frame 2:
1991 1992
USA 200 129
Canada 245 342
有关我应该如何做的任何建议吗?
答案 0 :(得分:2)
如果我猜对了,这可能就是你要找的。只需添加一个geom_point()图层来绘制第二个数据帧的数据:
#Create dataframe A
a.country <- rep(c("USA", "Canada"), 2)
a.value <- as.numeric(c(1, 4, 3, 5))
a.year <- c("1991", "1991", "1992", "1992")
dtframe.a <- data.frame(a.country, a.year, a.value)
#Create dataframe B
b.country <- rep(c("USA", "Canada"), 2)
b.value <- c(200, 245, 129, 342)
b.year <- c("1991", "1991", "1992", "1992")
dtframe.b <- data.frame(b.country, b.year, b.value)
# Use ggplot2 to plot data from 2 dataframes
require(ggplot2)
ggplot() +
geom_point(data=dtframe.a, aes(a.year, a.value, color= a.country)) +
geom_point(data=dtframe.b, aes(b.year, b.value, color= b.country))
答案 1 :(得分:1)
我知道的大多数散点图命令在同一数据帧中使用不同的列。我建议将两个数据帧合并为一个。目前尚不清楚你是想要将1991和1992的值一起绘制还是分开绘制,所以我遵循DanielRP并假设你将它们一起绘制(但是在散点图中)。你可以在绘图中将年份作为一个条件来分别绘制它们。这是一个有希望让你开始的例子:
#Create dataframe 1
country <- rep(c("USA", "Canada"), 2)
x.value <- as.numeric(c(1, 4, 3, 5))
year <- c("1991", "1991", "1992", "1992")
df.1 <- data.frame(country, year, x.value)
#Create dataframe 2
country <- rep(c("USA", "Canada"), 2)
y.value <- c(200, 245, 129, 342)
year <- c("1991", "1991", "1992", "1992")
df.2 <- data.frame(country, year, y.value)
#Merge the two dataframes based on 'country' (since this is identical in both)
new.df<-merge(df.1,df.2)
#Make your scatterplot
plot(new.df$x.value,new.df$y.value,xlab="X value",ylab="Y value")
这是一个非常简单的情节,所以根据您的需要,您可能更喜欢使用ggplot2或其他包。