使用聚合函数聚合每个日期的总收入

Aggregate the total revenue for each date by using aggregate function

我有一个从 2016-01-012017-05-21 的每日收入数据集 df。数据集包含 DatumlanguagesOpbrengst 变量。

       Datum    lanuage  Opbrengst
596    20160101  bg       254
923    20160101  bg-bg    434
1044   20160101  ca       115
1544   20160101  ca-es    238
2008   20160101  cs       251
....

我要group by DatumOpbrengst

我试过How to sum a variable by group?

的方法
 aggregate(Datum ~ Opbrengst, data=df, FUN="sum")

 tapply(df$Datum, df$Opbrengst, FUN=sum)

结果变成

       Opbrengst     Datum
1             10   786304986
2            100  1048457710
3           1000   221796843
4        1000,01    20160628
5        1000,78    20170104

这不是我想要的结果。我想要每个日期的收入总和。我想知道问题出在哪里?

我们有两个问题。

1) aggregate公式方法中分组变量的使用。分组变量放在 ~ 的右侧,而感兴趣的变量 Opbrengst 放在 lhs

的右侧
aggregate(Opbrengst~Datum, df1, sum)

2) 'Opbrengst' 列是 factor。它似乎有 , 字符,并且在阅读时会导致 factor class(如果我们没有在 read.csv/read.table 中指定 stringsAsFactors = FALSE 等)。一种选择是使用 sub 删除 ,,转换为 numeric,然后使用 aggregate

df$Opbrengst <- as.numeric(gsub(",", "", df$Opbrengst))