This question already has answers here:
Repeat each row of data.frame the number of times specified in a column
(8个答案)
7年前关闭。
这个想法是将频率表转换为geom_density可以处理的东西(
从频率表开始
使用dcast制作频率表
如何扭转这种情况?
或更简单
(8个答案)
7年前关闭。
这个想法是将频率表转换为geom_density可以处理的东西(
ggplot2
)。从频率表开始
> 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
最佳答案
由于可以使用任何聚合函数,因此如果不知道如何反转聚合,就无法反转dcast
(聚合)。
对于length
来说,很明显的逆是rep
。对于sum
或mean
之类的聚合,没有明显的反函数(假定您尚未将原始数据保存为属性)。
反转length
的一些选项
您可以使用ddply
library(plyr)
ddply(dat2,.(x), summarize, y = rep(y,count))
或更简单
as.data.frame(lapply(dat2[c('x','y')], rep, dat2$count))
关于r - 与dcast相反,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18010069/
10-12 22:38