агрегация данных и неверный тип данных сообщение? - PullRequest
0 голосов
/ 20 июня 2019

Я застрял на том, как собрать некоторую дату на некоторое время.

 DF2 <- aggregate(.~fund, cbind(DF["fund"], test[assets_cols]), sum)

Я получаю следующее сообщение об ошибке,

Ошибка в model.frame.default (формула = cbind () ~ fund, data = cbind (test ["fund"],: недопустимый тип (NULL) для переменной 'cbind ()'

 DF

 name   fund      2018_11_return 2018_12_return 2018_11_assets 2018_12_assets
 ab1 xcdfjxxv123         3.154       3.18         34234234234     546454543
 ds1 xcdfjxxv123         3.123       4.28         31231234234     454684543
 ad8 sdfffesg124         6.523       6.78         61121234234     234684543 
 t68 sdfffesg124          7.723       8.88         12232234234     5234684543 

Любая помощь приветствуется. Фактический набор данных содержит намного больше строк, а группы не всегда имеют одинаковый размерЯ хотел бы выводить как новый фрейм данных.

Извините за такой простой вопрос

1 Ответ

1 голос
/ 20 июня 2019

Вот решение с использованием data.table, который суммирует все столбцы _assets по годам и фондам:

настройка

library(data.table)
dt = data.table("name" = c("ab1", "ds1", "ad8", "t68"),
                "fund" = c("fund1","fund1","fund2","fund2"),
                "2018_11_assets" = 1:4,
                "2018_12_assets" = 101:104,
                "2019_11_assets" = 10:13,
                "2019_12_assets" = 110:113)

   name  fund 2018_11_assets 2018_12_assets 2019_11_assets 2019_12_assets
1:  ab1 fund1              1            101             10            110
2:  ds1 fund1              2            102             11            111
3:  ad8 fund2              3            103             12            112
4:  t68 fund2              4            104             13            113

решение

dt = melt(data = dt, id.vars = c("name", "fund")) # convert to long data
dt[, year := as.numeric(substr(variable, 0, 4))] #extract the year
dt[, .(assets = sum(value)), by = .(fund, year)] # aggregate

    fund year assets
1: fund1 2018    206
2: fund2 2018    214
3: fund1 2019    242
4: fund2 2019    250
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...