Raghu
Raghu

Reputation: 13

R Group columns by Date and Group_By Dplyr is not working

My data looks like this,

  Date           Company          State       Sales
2018-07-01      McDonalds        Michigan     1.2 mn
2018-07-02      McDonalds        Michigan     1.1 mn 
2018-07-03      McDonalds        Ohio         1.4 mn
2018-07-04      McDonalds        Indiana      1.4 mn
2018-07-05      McDonalds        Indiana      1.7 mn
2018-07-01      BurgerKing       Michigan     1.1 mn
2018-07-02      Burgerking       Michigan     1.4 mn
2018-07-03      Burgerking       Ohio         1.0 mn
2018-07-04      Burgerking       Indiana      1.8 mn
2018-07-05      Burgerking       Indiana      1.2 mn
2018-07-01      Wendy's          Michigan     1.4 mn
2018-07-02      Wendy's          Michigan     1.7 mn
2018-07-03      Wendy's          Ohio         1.2 mn
2018-07-04      Wendy's          Indiana      1.1 mn
2018-07-05      Wendy's          Indiana      1.4 mn

I want to group the data by date and check how each company is performing on each state for that particular day. Like this,

  Date           Company          State       Sales
2018-07-01      McDonalds        Michigan     1.2 mn
2018-07-01      BurgerKing       Michigan     1.1 mn 
2018-07-01      Wendy's          Michigan     1.4 mn
2018-07-02      McDonalds        Michigan     1.1 mn
2018-07-02      BurgerKing       Michigan     1.4 mn
2018-07-02      Wendy's          Michigan     1.7 mn
2018-07-03      McDonalds        Ohio         1.4 mn
2018-07-03      BurgerKing       Ohio         1.0 mn
2018-07-03      Wendy's          Ohio         1.2 mn
2018-07-04      McDonalds        Indiana      1.4 mn

. .

I tried group_by (dplyr) like df%>%group_by(Date)%>% arrange(Company,State) and I don't see any change in the data. The class of 'Date' is 'factor' and when I tried to use as.date(Date,format) to change it the Date to date class, I am receiving the error, Error in as.date(df$Date) : could not find function "as.date"

Please help me with this,if you know how to arrange the data.

Upvotes: 1

Views: 136

Answers (1)

coffeinjunky
coffeinjunky

Reputation: 11514

Is this what you want?

library(dplyr)
arrange(df, Date, Company, State)
         Date    Company    State Sales
1  2018-07-01 BurgerKing Michigan   1.1
2  2018-07-01  McDonalds Michigan   1.2
3  2018-07-01    Wendy's Michigan   1.4
4  2018-07-02 Burgerking Michigan   1.4
5  2018-07-02  McDonalds Michigan   1.1
6  2018-07-02    Wendy's Michigan   1.7
7  2018-07-03 Burgerking     Ohio   1.0
8  2018-07-03  McDonalds     Ohio   1.4
9  2018-07-03    Wendy's     Ohio   1.2
10 2018-07-04 Burgerking  Indiana   1.8
11 2018-07-04  McDonalds  Indiana   1.4
12 2018-07-04    Wendy's  Indiana   1.1
13 2018-07-05 Burgerking  Indiana   1.2
14 2018-07-05  McDonalds  Indiana   1.7
15 2018-07-05    Wendy's  Indiana   1.4

If you don't want alphabetical ordering of names, you need to turn character vectors into factors. For instance,

df$Company <- factor(df$Company, levels = c("McDonalds", "Burgerking", "Wendy's"))
arrange(df, Date, Company, State)
         Date    Company    State Sales
1  2018-07-01  McDonalds Michigan   1.2
2  2018-07-01 Burgerking Michigan   1.1
3  2018-07-01    Wendy's Michigan   1.4
4  2018-07-02  McDonalds Michigan   1.1
5  2018-07-02 Burgerking Michigan   1.4
6  2018-07-02    Wendy's Michigan   1.7
7  2018-07-03  McDonalds     Ohio   1.4
8  2018-07-03 Burgerking     Ohio   1.0
9  2018-07-03    Wendy's     Ohio   1.2
10 2018-07-04  McDonalds  Indiana   1.4
11 2018-07-04 Burgerking  Indiana   1.8
12 2018-07-04    Wendy's  Indiana   1.1
13 2018-07-05  McDonalds  Indiana   1.7
14 2018-07-05 Burgerking  Indiana   1.2
15 2018-07-05    Wendy's  Indiana   1.4

Upvotes: 1

Related Questions