Почему dplyr сворачивает весь мой фрейм данных, а не группирует его - PullRequest
0 голосов
/ 03 октября 2018

Я изучал это некоторое время, и я не могу найти проблему.Я регулярно использую dplyr, но, похоже, неожиданно я получаю странный вывод из комбинации group_by / sumrize.

У меня большой набор данных, и я пытаюсь обобщить его, используя следующее:

dataAgg <- dataRed %>% group_by(ClmNbr, SnapshotDay, Pre2016) %>%
  filter(SnapshotDay == '30'| SnapshotDay == '90') %>%
  summarise(
    NumFeat = sum(FeatureNbr),
    TotInc = sum(IncSnapshotDay),
    TotDelta = sum(InctoFinal),
    TotPaid = sum(FinalPaid)
  )

Ниже приведены настройки фрейма данных:

'data.frame':   123819 obs. of  8 variables:
 $ ClmNbr        : Factor w/ 33617 levels "14-00765132",..: 2162 2163 2163 2164 1842 2287 27 27 27 28 ...
 $ SnapshotDay   : Factor w/ 3 levels "7","30","90": 1 1 1 1 1 1 1 1 1 1 ...
 $ Pre2016       : Factor w/ 2 levels "Post2016","Pre2016": 2 2 2 2 2 2 2 2 2 2 ...
 $ FeatureNbr    : int  6 2 3 3 6 2 4 5 6 5 ...
 $ IncSnapshotDay: num  5000 77 5000 4500 77 2200 1800 1100 1800 25000 ...
 $ FinalPaid     : num  442 0 15000 5000 0 ...
 $ InctoFinal    : num  -4558 -77 10000 500 -77 ...
 $ TimeDelta     : num  25.833 2.833 2.833 0.833 1.833 ...

Когда я выполняю код, я получаю 1 шт.из 4 переменных;группировка не применяется.

'data.frame':   1 obs. of  4 variables:
 $ NumFeat : int 287071
 $ TotInc  : num NA
 $ TotDelta: num NA
 $ TotPaid : num 924636433

Раньше я делал это без проблем.

Я мог бы использовать агрегат, но иногда я смешиваю и сопоставляю функции на основе столбца, поэтому он не всегда работает.

Что я делаю не так?

1 Ответ

0 голосов
/ 03 октября 2018

Итак, после небольшого количества исследований и экспериментов порядок загрузки библиотеки имеет значение.Первоначальный порядок был следующим:

library(RODBC)
library(dplyr)
library(DT)
library(reshape2)
library(ggplot2)
library(scales)
library(caret)
library(markovchain)
library(knitr)
library(Metrics)
library(RColorBrewer)

Однако ggplot2 загружается в plyr как зависимость, поэтому, чтобы сделать эту работу более плавной, порядок следует пересмотреть, чтобы загрузить dplyr last;именно это я и делал.

library(RODBC)
library(DT)
library(reshape2)
library(ggplot2)
library(scales)
library(caret)
library(markovchain)
library(knitr)
library(Metrics)
library(RColorBrewer)
library(dplyr)

В качестве альтернативы, как в Python, это можно сделать, указав библиотеку для выполнения команды.В Python мы импортируем библиотеки в следующем синтаксисе:

import numpy as np

Затем на любую numpy commmands ссылаются, используя np., как np.array(), синтаксис R следующий library::

Добавление dplyr:: к командам устраняет проблему, как показано ниже.

dataAgg <- dataRed %>% dplyr::group_by(ClmNbr, SnapshotDay, Pre2016) %>%
  dplyr::filter(SnapshotDay == '30'| SnapshotDay == '90') %>%
  dplyr::summarise(
    NumFeat = sum(FeatureNbr),
    TotInc = sum(IncSnapshotDay),
    TotDelta = sum(InctoFinal),
    TotPaid = sum(FinalPaid)
  )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...