如何处理重叠因子水平? (例如,在制作桌子和地块时)

时间:2014-01-27 20:45:38

标签: r dataframe ggplot2 r-factor

我遇到的问题是数据集重叠因子水平

我想按因子水平生成时间表,条形图和统计数据 - 但是,我希望因子水平是模棱两可的。 这意味着属于多个级别的观测值应在图中多次出现。

以下是我的数据结构的示例:

head <- c("ID","YEAR","BRAZIL","GERMANY","US","FRANCE")
data <- data.frame(matrix(c(1,2000,1,0,0,0,
                            2,2010,0,1,1,0,
                            3,2011,0,1,0,0,
                            4,2012,1,0,0,1,
                            5,2012,0,1,0,0,
                            6,2013,0,0,0,1), 
                         nrow=6, ncol=6, byrow=T))
names(data) <- head

很明显,无法以通常的方式创建可能的因子变量"COUNTRY"。这将迫使因子水平明确(在我们的案例中将有4个级别:巴西,德国,美国法国):

data$COUNTRY[data$BRAZIL==1 & 
             data$GERMANY==0 & 
             data$US==0 & 
             data$FRANCE==0]  <- "Brazil"
data$COUNTRY[data$BRAZIL==0 & 
             data$GERMANY==1 & 
             data$US==0 & 
             data$FRANCE==0]  <- "Germany"

等...

factor(data$COUNTRY)

但这不是我想要的......


我的问题是按因子绘制只有在因子水平明确无误的情况下才有效。 我想生产这样的东西:

require(ggplot2)
MYPLOT <- qplot(data$YEAR, data$COUNTRY)
MYPLOT + geom_point(aes(size=..count..), stat="bin") + scale_size(range=c(0, 15)) 

属于 i 因子水平的观测值在图中出现 i 次。

  • 我应该如何转换我的data.frame以获得我想要的东西?
  • 我应该简单地复制那些属于 i 因子水平 i 次的观察结果吗?如果是,我应该怎么做?
  • 是一种不需要重复案例的解决方法吗?

想法有人吗?

1 个答案:

答案 0 :(得分:1)

我认为你必须复制这些行来代表每个观察。并删除任何0。

library(reshape2)
d2<-melt(data, id.var=c("ID","YEAR"))
d3<-d2[d2$value!=0,]
library(ggplot2)
qplot(d3$YEAR, d3$variable)