这个想法是将频率表转换成可被 ggplot2
的 geom_density 函数处理的形式。
从一个频率表开始。
> dat <- data.frame(x = c("a", "a", "b", "b", "b"), y = c("c", "c", "d", "d", "d"))
> dat
x y
1 a c
2 a c
3 b d
4 b d
5 b d
使用dcast制作频率表
> library(reshape2)
> dat2 <- dcast(dat, x + y ~ ., fun.aggregate = length)
> dat2
x y count
1 a c 2
2 b d 3
这个怎么能反过来呢?
melt
似乎不是答案:> colnames(dat2) <- c("x", "y", "count")
> melt(dat2, measure.vars = "count")
x y variable value
1 a c count 2
2 b d count 3
dat2[rep(row.names(dat2), dat2$count), 1:2]
是什么意思? - A5C1D2H2I1M1N2O1R2T1Error in NextMethod() : cannot coerce type 'closure' to vector of type 'integer'
,另一个错误是Error in rep.default(X[[1L]], ...) : invalid 'times' argument
。Rep确实是显而易见的解决方案,但它似乎并不擅长复制整行数据框。 - nacnudus