Агрегируйте общий доход на каждую дату с помощью агрегатной функции


У меня есть ежедневный набор данных доходов df от 2016-01-01 до 2017-05-21. Набор данных содержит Datum, languages и Opbrengst переменные.

       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 Datum для Opbrengst.

Я пробовал метод из Как суммировать переменную по группе?

 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 2

1 ответ:

У нас есть две проблемы.

1) Использование группирующей переменной в Формуле метода aggregate. Группирующая переменная помещается в rhs ~ , в то время как переменная интереса Opbrengst на lhs
aggregate(Opbrengst~Datum, df1, sum)
2) колонка "Opbrengst" - это factor. Он, по-видимому, имеет , характер, и это приводит к классу factor при чтении (если мы не указываем stringsAsFactors = FALSE в read.csv/read.table и т. д.). Один из вариантов-удалить , с sub, преобразовать в numeric и затем использовать aggregate
df$Opbrengst <- as.numeric(gsub(",", "", df$Opbrengst))