dplyr分组并使用来自多个列的条件

dplyr分组并使用来自多个列的条件,r,dplyr,R,Dplyr,我有一个这样的数据框 transactionId user_id total_in_pennies created_at X yearmonth 1 345068 8 9900 2018-09-13 New Customer 2018-09-01 2 346189 8 9900 2018-09-20 Repeat Customer 2018-09-01 3

我有一个这样的数据框

  transactionId user_id total_in_pennies created_at               X  yearmonth
1        345068       8             9900 2018-09-13    New Customer 2018-09-01
2        346189       8             9900 2018-09-20 Repeat Customer 2018-09-01
3        363500       8             7700 2018-10-11 Repeat Customer 2018-10-01
4        376089       8             7700 2018-10-25 Repeat Customer 2018-10-01
5        198450      11                0 2018-01-18    New Customer 2018-01-01
6        203966      11                0 2018-01-25 Repeat Customer 2018-01-01
它有更多的行,但是这个小片段可以使用

我正在尝试使用dplyr进行分组,这样我就可以得到这样的最终数据帧

  transactionId user_id total_in_pennies created_at               X  yearmonth
1        345068       8             9900 2018-09-13    New Customer 2018-09-01
2        346189       8             9900 2018-09-20 Repeat Customer 2018-09-01
3        363500       8             7700 2018-10-11 Repeat Customer 2018-10-01
4        376089       8             7700 2018-10-25 Repeat Customer 2018-10-01
5        198450      11                0 2018-01-18    New Customer 2018-01-01
6        203966      11                0 2018-01-25 Repeat Customer 2018-01-01

我使用这个代码

df_RFM11 <- data2 %>% group_by(yearmonth) %>% 
  summarise(New_Customers=sum(X=="New Customer"), Repeat_Customers=sum(X=="Repeat Customer"), New_Customers_sales=sum(total_in_pennies & X=="New Customers"), Repeat_Customers_sales=sum(total_in_pennies & X=="Repeat Customers"))
df_RFM11%分组依据(年-月)%>%
总结(新客户=总和(X=“新客户”)、重复客户=总和(X=“重复客户”)、新客户=总和(总销售额=新客户)、重复客户=总和(总销售额=重复客户)
我得到了这个结果

> head(df_RFM11)
# A tibble: 6 x 5
  yearmonth  New_Customers Repeat_Customers New_Customers_sales Repeat_Customers_sales
  <date>             <int>            <int>               <int>                  <int>
1 2018-01-01          4880             2428                   0                      0
2 2018-02-01          2027            12068                   0                      0
3 2018-03-01          1902            15296                   0                      0
4 2018-04-01          1921            13363                   0                      0
5 2018-05-01          2631            18336                   0                      0
6 2018-06-01          2339            14492                   0                      0
>头部(df_RFM11)
#一个tibble:6x5
年月份新客户重复客户新客户销售重复客户销售
1 2018-01-01          4880             2428                   0                      0
2 2018-02-01          2027            12068                   0                      0
3 2018-03-01          1902            15296                   0                      0
4 2018-04-01          1921            13363                   0                      0
5 2018-05-01          2631            18336                   0                      0
6 2018-06-01          2339            14492                   0                      0
我可以得到我需要的前两列,新客户和回头客的数量,但是当我试图得到新客户和回头客的“总金额”时,我得到了0


关于我做错了什么有什么帮助吗?

您需要将它们放在括号中,如下所示:

df_RFM11 <- data2 %>% 
  group_by(yearmonth) %>% 
  summarise(New_Customers=sum(X=="New Customer"),
            Repeat_Customers=sum(X=="Repeat Customer"),
            New_Customers_sales=sum(total_in_pennies[X=="New Customer"]),
            Repeat_Customers_sales=sum(total_in_pennies[X=="Repeat Customer"])
            )
df_RFM11%
分组单位(年-月)%>%
总结(新客户=总和(X=“新客户”),
重复客户=总和(X=“重复客户”),
新客户销售额=总和(以便士为单位的总额[X==“新客户”),
重复客户销售=总额(以便士为单位的总额[X==“重复客户”])
)

运气不好,我使用了该代码,但在第3和第4次时仍然得到0分column@juan-洛扎诺:注意@arg0naut是如何改变你的条件的。。。你有一个打字错误:
Customer
vs
Customers
。事实上,试着解决这个打字错误,它应该会起作用;我在代码中更正了它,所以也许重新运行并让我们知道。不客气!如果有帮助,可以考虑接受这个答案。