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