首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与dcast相反

与dcast相反
EN

Stack Overflow用户
提问于 2013-08-02 14:22:29
回答 1查看 3.2K关注 0票数 3

其思想是将频率表转换为geom_density可以处理的内容(ggplot2)。

从频率表开始

代码语言:javascript
复制
> 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制作频率表

代码语言:javascript
复制
> library(reshape2)
> dat2 <- dcast(dat, x + y ~ ., fun.aggregate = length)
> dat2
  x y count
1 a c     2
2 b d     3

如何才能扭转这一局面呢?melt似乎不是答案:

代码语言:javascript
复制
> 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
EN

回答 1

Stack Overflow用户

发布于 2013-08-02 14:36:52

因为您可以使用任何聚合函数,所以在不知道如何反转聚合的情况下,将无法反转dcast (聚合)。

对于length来说,明显相反的是rep。对于像summean这样的聚合,没有明显的反转(假设您没有将原始数据保存为属性)

用于反转length的一些选项

您可以使用ddply

代码语言:javascript
复制
library(plyr)
ddply(dat2,.(x), summarize, y = rep(y,count))

或者更简单地说

代码语言:javascript
复制
as.data.frame(lapply(dat2[c('x','y')], rep, dat2$count))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18010069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档