非常に大きなデータセットを扱う際に問題があります。商品ID、購入日、購入数量があります。メモ、P =アイテムID、D =日付、及びQ =購入数量として大きなデータセットをグループ化して集約するのが難しい
str(Output0)
'data.frame': 183847 obs. of 3 variables:
$ D: Factor w/ 460 levels "2015-09-21","2015-09-24",..: 3 3 3 3 3 3 3 3 3 3 ...
$ P: int 1 2 3 4 5 6 7 8 9 10 ...
$ Q: num 7 1 2 1 1 1 1 1 1 1 ...
Iは、3日間の期間により各アイテムの購入数量を合計したい(SO存在してもよいであろうアイテムIDが重複していることがあります)。例えば:私が使用して試した
ItemID DateEndPoint Purchase Q
1234 1/1/16 1
1235 1/3/16 3
1444 1/3/16 3
:
Output2 <- aggregate(Output0$Q, by=list(PS=P,
Date = cut(as.Date(Output0$D, format="%d/%m/%Y"),breaks="3 day")), FUN=sum)
が、それは、このエラーを考え出すされています
Error in seq.int(0, to0 - from, by) : 'to' cannot be NA, NaN or infinite
In addition: Warning messages: 1: In min.default(c(NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, : no non-missing arguments to min; returning Inf 2: In max.default(c(NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, : no non-missing arguments to max; returning -Inf
P Date Purchase Q
1234 1/1/16 1
1235 1/1/16 1
1235 1/2/16 1
1235 1/3/16 1
1444 1/1/16 1
1444 1/2/16 1
1444 1/3/16 1
は次のようになります。私はまた、他の期間についても同じことをしたいと思います。必要(1日、1週間)なので、再生可能なものはすばらしいでしょう。 P Lapointeに対応して
:
:それはのように表示される最後の列は、すべての日付間のすべての項目を合計する代わりに、各期間のしていることをOutput1 <- POData%>%mutate(Date=as.Date(POData$`PO Date`,"%m-%d-%Y"),Date_Group=cut(Date,breaks="3 days"))%>% group_by(POData$`ItemID`,Date_Group)%>%summarise(DateEndPoint=max(Date),Purchase_Q=sum(POData$`POQty`,na.rm=TRUE))
除いて、私は以下試した、それは偉大に見えます
> View(Output1)
> str(Output1)
Classes ‘grouped_df’, ‘tbl_df’, ‘tbl’ and 'data.frame': 116749 obs. of 4 variables:
$ POData$`Item ID`: int 11 11 11 11 11 11 11 11 11 11 ...
$ Date_Group : Factor w/ 216 levels "2015-09-21","2015-09-24",..: 4 6 11 13 14 15 18 19 24 25 ...
$ DateEndPoint : Date, format: "2015-10-02" "2015-10-08" ...
$ Purchase_Q : num 2691020 2691020 2691020 2691020 2691020 ...
- attr(*, "vars")= chr "POData$`Item ID`"
- attr(*, "drop")= logi TRUE
ありがとうございます!
DPLYRパッケージを試しましたか? – AntonCH
@AntonCHいいえ私はまだしていません - 何をお勧めしますか? –
@SuttonMurray私はあなたの実生活の例で3日以上を持っていると思います。合計金額(毎日計算)または3日間の期間が重複しないようにしたいですか? –