R 按月对行求和时生成错误

R 按月对行求和时生成错误,r,R,下面是成功与失败的数据和日期,我想按月汇总。我尝试了以下命令,但它给出了以下错误 rowsum(xx$success, format(xx$$date, "%b-%Y")) 格式错误。默认值(结构为。字符(x),名称=名称(x),尺寸=尺寸(x),: 无效的“trim”参数 不知道我错在哪里 date success 5-Sep-02 0 19-Sep-02 0 25-Sep-02 1 10-Oct-02 0 12-Oct-02

下面是成功与失败的数据和日期,我想按月汇总。我尝试了以下命令,但它给出了以下错误

rowsum(xx$success, format(xx$$date, "%b-%Y"))
格式错误。默认值(结构为。字符(x),名称=名称(x),尺寸=尺寸(x),:
无效的“trim”参数

不知道我错在哪里

    date    success
 5-Sep-02       0
19-Sep-02       0
25-Sep-02       1
10-Oct-02       0
12-Oct-02       0
14-Oct-02       1
15-Oct-02       0
28-Oct-02       0
30-Oct-02       0
 9-Nov-02       1
14-Nov-02       0
19-Nov-02       1
 2-Dec-02       0
12-Dec-02       0
16-Dec-02       0

下面是一个使用dplyr的解决方案:

# first convert date to class "date":
xx$date <- as.Date(as.character(xx$date), "%d-%b-%y") # careful: if your locale is not set properly %b might return NAs

xx %>% 
group_by(date = as.yearmon(date)) %>% # we group by month, using as.yearmon from the package "zoo"
summarise(success = sum(success)) # and then we summarise
您的问题是rowSum不是按月份汇总的,而是对每一行(即每个观察值)进行汇总。您基本上是让
R
对月份和成功值进行汇总,这(显然)导致了错误

编辑:

通过重读这个问题,不完全清楚OP是否希望在一个月内统计成功和失败的次数。这只需要对我上面发布的代码稍作调整:

df %>% 
group_by(date = as.yearmon(date)) %>% 
summarise(successes = sum(success == 1),
          failures = sum(success == 0))

这方面现有Q/A的基本等价物为聚合(success~format(如.Date(日期,%e-%b-%y”),%y-%b),dat,sum)现在还不完全清楚问题是如何将成功和失败结合起来,这可能是一个更具原创性的问题。我在下面编辑了我的答案,以反映这一点。如果OP能够澄清,那就太好了。@Felix如果他们能够澄清,我会将其标记为重新打开。
df %>% 
group_by(date = as.yearmon(date)) %>% 
summarise(successes = sum(success == 1),
          failures = sum(success == 0))