【问题标题】:can i change the tapply into aggregate to get the same result?我可以将 tapply 更改为聚合以获得相同的结果吗?
【发布时间】:2023-03-12 03:52:01
【问题描述】:
dat=data.frame(
    year=c(rep(2007,5),rep(2008,3),rep(2009,3)),
    province=c("a","a","b","c","d","a","c","d","b","c","d"),
    sale=1:11)
tapply(dat$sale,list(dat$year,dat$province),sum)
      a  b  c  d
2007  3  3  4  5
2008  6 NA  7  8
2009 NA  9 10 11

在这种情况下,如何将 tapply 更改为聚合以获得相同的结果?

【问题讨论】:

  • 请问为什么? tapply 是否以某种方式无法按预期为您工作?一般的解决方案是(如果你想使用aggregate)首先是aggregate,然后是reshape。类似:reshape(aggregate(sale ~ year + province, dat, sum), direction = "wide", idvar="year", timevar="province"),但不知道为什么,所以犹豫将其发布为答案。
  • 另一个选项是使用xtabs,结果是你想要的格式:xtabs(sale~year+province, data=dat)

标签: r aggregate tapply


【解决方案1】:

它不会被安排成一个表格,而是一个“长格式”的演示文稿。

> aggregate(dat$sale,list(dat$year,dat$province),sum)
   Group.1 Group.2  x
1     2007       a  3
2     2008       a  6
3     2007       b  3
4     2009       b  9
5     2007       c  4
6     2008       c  7
7     2009       c 10
8     2007       d  5
9     2008       d  8
10    2009       d 11

您是否认为同样不清楚。信息内容相同。

【讨论】:

    猜你喜欢
    • 2020-10-13
    • 2022-10-04
    • 2019-06-03
    • 1970-01-01
    • 2019-04-19
    • 2021-05-12
    • 2015-01-15
    • 2018-09-25
    • 1970-01-01
    相关资源
    最近更新 更多