我已经研究了一段时间,但似乎找不到问题。我经常使用dplyr,但突然之间,我从group_by / summarise组合中得到了奇怪的输出。
我的数据集很大,我正在尝试使用以下方法对其进行总结:
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
我过去经常这样做,没有问题。
我可以使用聚合,但有时,我会基于列来混合和匹配函数,因此它并不总是有效。
我在做什么错了?
答案 0 :(得分:1)
因此,经过一些研究和实验,库加载的顺序很重要。原始顺序如下:
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
。这是我过去要做的。
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)
)