SFuj - 1 year ago 108

R Question

I have some member order data that I would like to aggregate by week of order.

This is what the data looks like:

`memberorders=data.frame(MemID=c('A','A','B','B','B','C','C','D'),`

week = c(1,2,1,4,5,1,4,1),

value = c(10,20,10,10,2,5,30,3))

I'm using dplyr to group_by "MemID" and summarize "value" for "week" <=2 and <=4 (to see how much each member ordered in weeks 1-2 and 1-4. The code I currently have is:

`MemberLTV <- memberorders %>%`

group_by(MemID) %>%

summarize(

sum2 = sum(value[week<=2]),

sum4 = sum(value[week<=4]))

I'm now trying to add two more fields in summarize, count2 and count4, that would count the number of instances of each condition (week <=2 and week <=4).

The desired output is:

`output = data.frame(MemID = c('A','B','C','D'),`

sum2 = c(30,10,5,3),

sum4 = c(30,20,35,3),

count2 = c(2,1,1,1),

count4 = c(2,2,2,1))

I'm guessing it's just a little tweak of the sum function but I'm having trouble figuring it out.

Answer Source

Try

```
library(dplyr)
memberorders %>%
group_by(MemID) %>%
summarise(sum2= sum(value[week<=2]), sum4= sum(value[week <=4]),
count2=sum(week<=2), count4= sum(week<=4))
```