【问题标题】:R sum on rows based on day [duplicate]基于天的行的R总和[重复]
【发布时间】:2017-06-23 13:20:30
【问题描述】:

我有一个包含按天销售的数据框,但由于一天有很多值,所以我想重建我的数据框,使其每天只有一个值,这是当天所有销售的总和。

我有什么:

我想要什么:

(数值计算不好,但仅用于示例)

我尝试过这样的聚合和函数,但它不起作用,我不知道该怎么做......

感谢您的帮助

【问题讨论】:

  • 是的,它是重复的,但使用 data.table 很容易:setDT(df)[, tot_by_day = sum(TOT_OP_MAIN_PAID_MNT), by = DATE_ID]
  • setDT(df)[, tot_by_day = sum(TOT_OP_MAIN_PAID_MNT), by = DATE_ID] [.data.table(setDT(df), , tot_by_day = sum(TOT_OP_MAIN_PAID_MNT), : 未使用的参数 (tot_by_day =总和(TOT_OP_MAIN_PAID_MNT))
  • 您的命令应该可以工作,但我不明白为什么会出现此错误
  • 这可能是由于您的列名。检查语法是否正确+如果不是这样,请不要忘记安装包并加载:install.packages("data.table") 然后require(data.table)
  • 现在我有了这个,我改变了类型,我测试了你的命令,我得到了这个 setDT(df)[, sum(TOT_OP_MAIN_PAID_MNT), by=DATE_ID] DATE_ID V1 1: NA 现在我的日期在我的 df 中都是 NA

标签: r dataframe aggregate cumsum


【解决方案1】:

聚合应该可以工作

aggregate(TOT_OP_MAIN_PAID_MNT,by=list(DATE_ID),FUN=sum)

【讨论】:

  • 感谢您的回答,但我有以下错误(我看到这个孤独像一百万次)“Summary.factor 中的错误(c(37299L,44973L,34393L,29184L,39963L,30029L, : 'sum' 对因子没有意义"
  • TOT_OP_MAIN_PAID_MNT 必须是数字。 as.numeric(as.character(TOT_OP_MAIN_PAID_MNT))
  • 我已经完成了,但这并没有改变任何事情
  • TOT_OP_MAIN_PAID_MNT <- as.numeric(as.character(TOT_OP_MAIN_PAID_MNT)) 更具体地说,你这样做了吗?
  • 它确实有效!谢谢布格尔先生 :)
【解决方案2】:

这应该可以工作

df <- data.frame(DATE_ID = 1, TOT_OP_MAIN_PAID_MNT = 1)
aggregate(TOT_OP_MAIN_PAID_MNT ~ DATE_ID, df, sum)

【讨论】:

    猜你喜欢
    • 2016-10-15
    • 1970-01-01
    • 2013-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-02
    • 2014-10-30
    相关资源
    最近更新 更多