Reputation: 13
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
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