如何以R汇总月度数量?

如何以R汇总月度数量?,r,dataframe,summary,R,Dataframe,Summary,我有一个数据框,它是一个交付记录。如何创建一个汇总数据框,该数据框的列中包含月份,行中包含客户,以及每月数量的总和 > my.data yr mo cust qty 1 2010 6 2005161 620448 2 2009 5 29290 533000 3 2011 6 51800 125000 4 2011 7 2005149 677856 5 2009 5 51888 128000 6 2011 1 290913 514

我有一个数据框,它是一个交付记录。如何创建一个汇总数据框,该数据框的列中包含月份,行中包含客户,以及每月数量的总和

> my.data
   yr   mo    cust    qty
1  2010  6 2005161 620448
2  2009  5   29290 533000
3  2011  6   51800 125000
4  2011  7 2005149 677856
5  2009  5   51888 128000
6  2011  1  290913  51400
7  2010  9 2075516 352800
8  2011 11   34029 574200
9  2009 11   40740 734740
10 2011 10 2016135 300209
11 2011  5 2000294 605300
12 2010  3   34004 675200
13 2011  2 2030823 610236
14 2011 12 2016188 682000
15 2010  7   23409  85000
16 2011  1 2089839 188000
17 2011 11   34414 455658
18 2011  7 2004149 166200
19 2011 11   40404 235000
20 2009  7  203203 531000

如果你想要每个月的数量总和,你可以这样做
mydf
是您的
my.data
。您可以使用
tidyr
包中的
spread
转换数据。然后,使用需要表格或数组的
addmargins
添加数量总和的行。将其转换为data.frame。最后,将
yr
cuts
的无意义总和更改为
NA

library(tidyr)
foo <- as.data.frame(addmargins(as.matrix(spread(mydf, mo, qty, fill = 0)),
                     1, FUN = list(total = 'sum')))

foo[nrow(foo), c(1:2)] <- NA
library(tidyr)

foo如果你想要每个月的数量总和,你可以这样做
mydf
是您的
my.data
。您可以使用
tidyr
包中的
spread
转换数据。然后,使用需要表格或数组的
addmargins
添加数量总和的行。将其转换为data.frame。最后,将
yr
cuts
的无意义总和更改为
NA

library(tidyr)
foo <- as.data.frame(addmargins(as.matrix(spread(mydf, mo, qty, fill = 0)),
                     1, FUN = list(total = 'sum')))

foo[nrow(foo), c(1:2)] <- NA
library(tidyr)

foo如果你想要每个月的数量总和,你可以这样做
mydf
是您的
my.data
。您可以使用
tidyr
包中的
spread
转换数据。然后,使用需要表格或数组的
addmargins
添加数量总和的行。将其转换为data.frame。最后,将
yr
cuts
的无意义总和更改为
NA

library(tidyr)
foo <- as.data.frame(addmargins(as.matrix(spread(mydf, mo, qty, fill = 0)),
                     1, FUN = list(total = 'sum')))

foo[nrow(foo), c(1:2)] <- NA
library(tidyr)

foo如果你想要每个月的数量总和,你可以这样做
mydf
是您的
my.data
。您可以使用
tidyr
包中的
spread
转换数据。然后,使用需要表格或数组的
addmargins
添加数量总和的行。将其转换为data.frame。最后,将
yr
cuts
的无意义总和更改为
NA

library(tidyr)
foo <- as.data.frame(addmargins(as.matrix(spread(mydf, mo, qty, fill = 0)),
                     1, FUN = list(total = 'sum')))

foo[nrow(foo), c(1:2)] <- NA
library(tidyr)

欢迎来到苏保罗。请务必特别阅读前两点。欢迎来到SO Paul。请务必特别阅读前两点。欢迎来到SO Paul。请务必特别阅读前两点。欢迎来到SO Paul。请务必特别阅读前两点。谢谢你的建议。对于您建议的两个选项,我都会得到一个错误“error:duplicatedidentifiers for rows(1,4),(2,…)(然后它会列出所有重复项)。从我的样本数据来看,这并不明显,但每个客户都有多个事件。@Paul Hi,感谢您的消息。您是否可以提供一个可复制的示例来修改您的问题?感谢您的建议。您建议的两个选项都会导致错误“错误:行(1,4)、(2,…)的标识符重复”(然后列出所有重复项)。从我的样本数据中看不明显,但每个客户都有多个事件。@Paul Hi,谢谢你的消息。你能提供一个可复制的例子来修改你的问题吗?谢谢你的建议。你建议的两个选项我都有一个错误“错误:行(1,4),(2,…)的标识符重复(然后列出所有重复项)。从我的样本数据来看,这并不明显,但每个客户都有多个事件。@Paul Hi,感谢您的消息。您是否可以提供一个可复制的示例来修改您的问题?感谢您的建议。您建议的两个选项都会导致错误“错误:行(1,4)、(2,…)的标识符重复”(然后列出所有重复项)。从我的样本数据看不明显,但每个客户都有多个事件。@Paul Hi,谢谢你的留言。你能提供一个重复的例子来修改你的问题吗?