Toronto Shelter
clearning : 날짜 변수를 year, month 로 나눔
- 년도별, occupancy
gruop_by(년도), summarise 합계를 구해서
- geom_point 연결
- 월별 capcity 비율 year 세분화
shleter 이름의 중복을 제거해주고, occupancy 와 capacity 의 year 별 합계를 구하고, 나눠서 그 비율을 구함
- Waffle Chart - 각 sector별 shelter name 의 갯수 (count) 를 구해서 나타내는 그래프
##
## Downloading file 1 of 1: `shelters.csv`
tuesdata$shelters -> shelters
# Year / Month 추출
shelters %>%
mutate(year = year(occupancy_date),
month = month(occupancy_date)) %>%
unite("date", year:month, sep= "/", remove = F) ->shelters
shelters %>%
group_by(date) %>% #연도별
summarise(month_occupancy = sum(occupancy)/1000) %>%
mutate(date= parse_date_time(date, "ym")) %>%
ggplot(aes(date, month_occupancy))+
geom_point(size=2, color = "#371206")+
geom_smooth(se=F, color= "#F72C25", size = 1.5)+
theme(text = element_text(family = font),
plot.subtitle = element_markdown(color ="#292929" ),
plot.background = element_rect("#EBEBEB"),
panel.background = element_blank(),
axis.title = element_text(color = "#292929", face = "bold"),
axis.text = element_text(color = "#292929", face = "bold"),
panel.grid = element_blank())+
labs(x= "Date", y= "Monthly Occupancy",
subtitle = "**<span style='color:#F72C25;font-size:60px;'>50%</span><br>increase in monthly shelter occupancy<br>from Jan 2017 to Dec 2019.**" ) -> plot_1
#Bar Plot:
shelters %>%
filter(!is.na(capacity)) %>%
group_by(month, year) %>%
summarise(n_distinct(shelter_name), #n_distinct 중복 개수 Count
year_occupancy = sum(occupancy),
year_capacity = sum(capacity),
rate = round(year_occupancy/year_capacity,2)) %>%
ggplot(aes(month, rate, fill=rate))+
geom_bar(stat = "identity")+
ylim(-1,1)+
coord_polar()+ ## pie chart 변환
scale_fill_gradient(low = "#ffb950", high = "#a50104") +
facet_wrap(~year, ncol = 3)+
theme(text = element_text(family = font),
legend.position = "none",
axis.text.y = element_blank(),
axis.ticks = element_blank(),
plot.background = element_rect("#EBEBEB"),
panel.background = element_blank(),
axis.title = element_text(color = "#292929", face = "bold"),
axis.text = element_text(color = "#292929", face = "bold"),
plot.subtitle = element_markdown(face = "bold", color = "#292929"),
strip.text.x = element_text(face = "bold", color = "#292929"),
strip.background = element_blank(),
panel.spacing = unit(2, "lines")) -> plot_2
plot_all <- plot_1/plot_2
plot_all + plot_annotation(title = "Toronto Shlaters",
subtitle = "As of 2019 there were 62 sheleter in Toronto",
theme = theme(plot.title = element_text(color = "#292929",size = 22, face = "bold", family = font),
plot.subtitle = element_text(color = "#292929", size = 14, family = font),
plot.caption = element_text(color = "grey50", face = "bold.italic", family = font),
plot.background = element_rect("#EBEBEB"),
panel.background = element_rect("#EBEBEB")))

Sample-Superstore
setwd("C:/Users/Administrator/Desktop/R Analysis")
read.csv("Sample-Superstore-Subset-Excel.csv", header = T) -> product
font <-"Roboto Condensed"
# Date 추출
substr(product$Order.Date, 7,10) -> product$year
substr(product$Order.Date, 4, 5) -> product$month
#as.Date(product$Order.Date, format = "%m/%d/%Y")
product %>%
mutate(year = as.factor(year),
month = as.factor(month)) %>%
unite("Date", year:month, sep = "/", remove = F) -> sales
my_colors <- c("#3e6487", "#829cb2", "#c7cdd1", "#edad88", "#e36c33", "#EBEBEB")
sales %>%
group_by(Customer.Segment, Order.Priority) %>%
count() %>%
ungroup() %>%
group_by(Customer.Segment) %>%
mutate(pct = 100*n/sum(n)) %>%
mutate(pct = round(pct,2)) %>%
mutate(bar_text = paste0(pct, "%")) %>%
ungroup() -> df_for_ploting
df_for_ploting %>%
ggplot(aes(Customer.Segment, pct, fill= Order.Priority))+
geom_col()+
coord_flip()+
theme(legend.position = "top")+
scale_fill_manual(values = my_colors[6:1], name = "")+
theme(text = element_text(family = font)) +
guides(fill = guide_legend(reverse = TRUE)) +
theme(axis.text = element_text(color = "grey20", size = 10.2))+
theme(plot.title = element_text(size = 18), plot.subtitle = element_text(size = 11, color = "grey20")) +
labs(x = NULL, y = NULL,
title ="No significant Difference of Order Priority by Customer Segment")+
geom_text(data=df_for_ploting, aes(label=bar_text),
position = position_stack(vjust=0.5))

LS0tDQp0aXRsZTogIlRvcm9udG8gU2hlbHRlciINCmF1dGhvcjogIkRPRVVOIg0KZGF0ZTogIjAyLzAzLzIwMjEiDQpvdXRwdXQ6DQogIGh0bWxfZG9jdW1lbnQ6IA0KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUNCiAgICAjIGNvZGVfZm9sZGluZzogaGlkZQ0KICAgIGhpZ2hsaWdodDogemVuYnVybg0KICAgICMgbnVtYmVyX3NlY3Rpb25zOiB5ZXMNCiAgICB0aGVtZTogImZsYXRseSINCiAgICB0b2M6IFRSVUUNCiAgICB0b2NfZmxvYXQ6IFRSVUUNCi0tLQ0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0NCmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSwgd2FybmluZyA9IEZBTFNFLCBtZXNzYWdlID0gRkFMU0UsIGNhY2hlID0gVFJVRSkNCg0KDQoNCmxpYnJhcnkoa25pdHIpDQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkocGF0Y2h3b3JrKQ0KbGlicmFyeShsdWJyaWRhdGUpDQpsaWJyYXJ5KGV4dHJhZm9udCkNCmxpYnJhcnkoZ2d0ZXh0KQ0KbGlicmFyeShDYWlybykNCmxpYnJhcnkoZ2dwbG90MikNCmxpYnJhcnkod2FmZmxlKQ0KYGBgDQoNCiMgVG9yb250byBTaGVsdGVyDQoNCmNsZWFybmluZyA6IOuCoOynnCDrs4DsiJjrpbwgeWVhciwgbW9udGgg66GcIOuCmOuIlCANCg0KDQoxLiDrhYTrj4Trs4QsIG9jY3VwYW5jeSANCg0KICAgOiBncnVvcF9ieSjrhYTrj4QpLCBzdW1tYXJpc2Ug7ZWp6rOE66W8IOq1rO2VtOyEnCANCiAgIDogZ2VvbV9wb2ludCDsl7DqsrAgDQogICANCiAgIA0KMi4g7JuU67OEIGNhcGNpdHkg67mE7JyoIHllYXIg7IS467aE7ZmUIA0KDQogICA6IHNobGV0ZXIg7J2066aE7J2YIOykkeuzteydhCDsoJzqsbDtlbTso7zqs6AsIG9jY3VwYW5jeSDsmYAgY2FwYWNpdHkg7J2YICB5ZWFyIOuzhCDtlanqs4TrpbwgICAgICAgIOq1rO2VmOqzoCwg64KY64ig7IScIOq3uCDruYTsnKjsnYQg6rWs7ZWoIA0KICAgDQogICANCjMuIFdhZmZsZSBDaGFydCAtIOqwgSBzZWN0b3Lrs4Qgc2hlbHRlciBuYW1lIOydmCDqsK/siJggKGNvdW50KSDrpbwg6rWs7ZW07IScIOuCmO2DgOuCtOuKlCDqt7jrnpjtlIQgDQpgYGB7ciBjYXJzfQ0KI2ZvbnQgDQoNCmZvbnQgPC0iUm9ib3RvIENvbmRlbnNlZCINCg0KDQoNCiNkYXRhIA0KDQp0dWVzZGF0YSA8LXRpZHl0dWVzZGF5Ujo6dHRfbG9hZCgyMDIwLCB3ZWVrID0gNDkpDQp0dWVzZGF0YSRzaGVsdGVycyAtPiBzaGVsdGVycw0KDQoNCiMgWWVhciAvIE1vbnRoIOy2lOy2nCANCg0Kc2hlbHRlcnMgJT4lIA0KICBtdXRhdGUoeWVhciA9IHllYXIob2NjdXBhbmN5X2RhdGUpLCANCiAgICAgICAgIG1vbnRoID0gbW9udGgob2NjdXBhbmN5X2RhdGUpKSAlPiUgIA0KICB1bml0ZSgiZGF0ZSIsIHllYXI6bW9udGgsIHNlcD0gIi8iLCByZW1vdmUgPSBGKSAtPnNoZWx0ZXJzDQoNCg0KDQoNCnNoZWx0ZXJzICU+JSANCiAgZ3JvdXBfYnkoZGF0ZSkgJT4lICAj7Jew64+E67OEIA0KICBzdW1tYXJpc2UobW9udGhfb2NjdXBhbmN5ID0gc3VtKG9jY3VwYW5jeSkvMTAwMCkgJT4lIA0KICBtdXRhdGUoZGF0ZT0gcGFyc2VfZGF0ZV90aW1lKGRhdGUsICJ5bSIpKSAlPiUgIA0KICBnZ3Bsb3QoYWVzKGRhdGUsIG1vbnRoX29jY3VwYW5jeSkpKw0KICBnZW9tX3BvaW50KHNpemU9MiwgIGNvbG9yID0gIiMzNzEyMDYiKSsNCiAgZ2VvbV9zbW9vdGgoc2U9RiwgY29sb3I9ICIjRjcyQzI1Iiwgc2l6ZSA9IDEuNSkrDQogIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoZmFtaWx5ID0gZm9udCksDQogICAgICAgIHBsb3Quc3VidGl0bGUgPSBlbGVtZW50X21hcmtkb3duKGNvbG9yID0iIzI5MjkyOSIgKSwNCiAgICAgICAgcGxvdC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KCIjRUJFQkVCIiksDQogICAgICAgIHBhbmVsLmJhY2tncm91bmQgPSBlbGVtZW50X2JsYW5rKCksDQogICAgICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X3RleHQoY29sb3IgPSAiIzI5MjkyOSIsIGZhY2UgPSAiYm9sZCIpLA0KICAgICAgICBheGlzLnRleHQgPSBlbGVtZW50X3RleHQoY29sb3IgPSAiIzI5MjkyOSIsIGZhY2UgPSAiYm9sZCIpLA0KICAgICAgICBwYW5lbC5ncmlkID0gZWxlbWVudF9ibGFuaygpKSsNCiAgbGFicyh4PSAiRGF0ZSIsIHk9ICJNb250aGx5IE9jY3VwYW5jeSIsIA0KICAgICAgIHN1YnRpdGxlID0gIioqPHNwYW4gc3R5bGU9J2NvbG9yOiNGNzJDMjU7Zm9udC1zaXplOjYwcHg7Jz41MCU8L3NwYW4+PGJyPmluY3JlYXNlIGluIG1vbnRobHkgc2hlbHRlciBvY2N1cGFuY3k8YnI+ZnJvbSBKYW4gMjAxNyB0byBEZWMgMjAxOS4qKiIgKSAtPiBwbG90XzENCg0KDQpgYGANCg0KDQpgYGB7cn0NCg0KI0JhciBQbG90OiANCg0Kc2hlbHRlcnMgJT4lIA0KICBmaWx0ZXIoIWlzLm5hKGNhcGFjaXR5KSkgJT4lIA0KICBncm91cF9ieShtb250aCwgeWVhcikgJT4lIA0KICBzdW1tYXJpc2Uobl9kaXN0aW5jdChzaGVsdGVyX25hbWUpLCAgI25fZGlzdGluY3Qg7KSR67O1IOqwnOyImCBDb3VudA0KICAgICAgICAgICAgeWVhcl9vY2N1cGFuY3kgPSBzdW0ob2NjdXBhbmN5KSwgDQogICAgICAgICAgICB5ZWFyX2NhcGFjaXR5ID0gc3VtKGNhcGFjaXR5KSwNCiAgICAgICAgICAgIHJhdGUgPSByb3VuZCh5ZWFyX29jY3VwYW5jeS95ZWFyX2NhcGFjaXR5LDIpKSAlPiUgDQogIGdncGxvdChhZXMobW9udGgsIHJhdGUsIGZpbGw9cmF0ZSkpKw0KICBnZW9tX2JhcihzdGF0ID0gImlkZW50aXR5IikrDQogIHlsaW0oLTEsMSkrIA0KICBjb29yZF9wb2xhcigpKyAjIyBwaWUgY2hhcnQg67OA7ZmYIA0KICBzY2FsZV9maWxsX2dyYWRpZW50KGxvdyA9ICIjZmZiOTUwIiwgaGlnaCA9ICIjYTUwMTA0IikgKyANCiAgZmFjZXRfd3JhcCh+eWVhciwgbmNvbCA9IDMpKw0KICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KGZhbWlseSA9IGZvbnQpLCANCiAgICAgICAgbGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiLA0KICAgICAgICBheGlzLnRleHQueSA9IGVsZW1lbnRfYmxhbmsoKSwNCiAgICAgICAgYXhpcy50aWNrcyA9IGVsZW1lbnRfYmxhbmsoKSwNCiAgICAgICAgcGxvdC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KCIjRUJFQkVCIiksDQogICAgICAgIHBhbmVsLmJhY2tncm91bmQgPSBlbGVtZW50X2JsYW5rKCksDQogICAgICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X3RleHQoY29sb3IgPSAiIzI5MjkyOSIsIGZhY2UgPSAiYm9sZCIpLA0KICAgICAgICBheGlzLnRleHQgPSBlbGVtZW50X3RleHQoY29sb3IgPSAiIzI5MjkyOSIsIGZhY2UgPSAiYm9sZCIpLA0KICAgICAgICBwbG90LnN1YnRpdGxlID0gZWxlbWVudF9tYXJrZG93bihmYWNlID0gImJvbGQiLCBjb2xvciA9ICIjMjkyOTI5IiksDQogICAgICAgIHN0cmlwLnRleHQueCA9IGVsZW1lbnRfdGV4dChmYWNlID0gImJvbGQiLCBjb2xvciA9ICIjMjkyOTI5IiksDQogICAgICAgIHN0cmlwLmJhY2tncm91bmQgPSBlbGVtZW50X2JsYW5rKCksDQogICAgICAgIHBhbmVsLnNwYWNpbmcgPSB1bml0KDIsICJsaW5lcyIpKSAtPiBwbG90XzINCmBgYA0KDQoNCmBgYHtyfQ0KcGxvdF9hbGwgPC0gcGxvdF8xL3Bsb3RfMiANCg0KDQpwbG90X2FsbCArIHBsb3RfYW5ub3RhdGlvbih0aXRsZSA9ICJUb3JvbnRvIFNobGF0ZXJzIiwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZSA9ICJBcyBvZiAyMDE5IHRoZXJlIHdlcmUgNjIgc2hlbGV0ZXIgaW4gVG9yb250byIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVtZSA9IHRoZW1lKHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoY29sb3IgPSAiIzI5MjkyOSIsc2l6ZSA9IDIyLCBmYWNlID0gImJvbGQiLCBmYW1pbHkgPSBmb250KSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxvdC5zdWJ0aXRsZSA9IGVsZW1lbnRfdGV4dChjb2xvciA9ICIjMjkyOTI5Iiwgc2l6ZSA9IDE0LCBmYW1pbHkgPSBmb250KSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxvdC5jYXB0aW9uID0gZWxlbWVudF90ZXh0KGNvbG9yID0gImdyZXk1MCIsIGZhY2UgPSAiYm9sZC5pdGFsaWMiLCBmYW1pbHkgPSBmb250KSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxvdC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KCIjRUJFQkVCIiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhbmVsLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoIiNFQkVCRUIiKSkpDQpgYGANCg0KDQojIFNhbXBsZS1TdXBlcnN0b3JlIA0KDQoNCmBgYHtyfQ0KDQpzZXR3ZCgiQzovVXNlcnMvQWRtaW5pc3RyYXRvci9EZXNrdG9wL1IgQW5hbHlzaXMiKQ0KDQpyZWFkLmNzdigiU2FtcGxlLVN1cGVyc3RvcmUtU3Vic2V0LUV4Y2VsLmNzdiIsIGhlYWRlciA9IFQpIC0+IHByb2R1Y3QNCg0KZm9udCA8LSJSb2JvdG8gQ29uZGVuc2VkIg0KDQojIERhdGUg7LaU7LacICAgICANCg0Kc3Vic3RyKHByb2R1Y3QkT3JkZXIuRGF0ZSwgNywxMCkgLT4gcHJvZHVjdCR5ZWFyDQpzdWJzdHIocHJvZHVjdCRPcmRlci5EYXRlLCA0LCA1KSAtPiBwcm9kdWN0JG1vbnRoDQoNCg0KI2FzLkRhdGUocHJvZHVjdCRPcmRlci5EYXRlLCAgZm9ybWF0ID0gIiVtLyVkLyVZIikNCg0KDQpwcm9kdWN0ICU+JSAgDQogIG11dGF0ZSh5ZWFyID0gYXMuZmFjdG9yKHllYXIpLCANCiAgICAgICAgIG1vbnRoID0gYXMuZmFjdG9yKG1vbnRoKSkgJT4lIA0KICB1bml0ZSgiRGF0ZSIsIHllYXI6bW9udGgsIHNlcCA9ICIvIiwgcmVtb3ZlID0gRikgLT4gc2FsZXMNCg0KDQpteV9jb2xvcnMgPC0gYygiIzNlNjQ4NyIsICIjODI5Y2IyIiwgIiNjN2NkZDEiLCAiI2VkYWQ4OCIsICIjZTM2YzMzIiwgIiNFQkVCRUIiKQ0KDQpzYWxlcyAlPiUgIA0KIGdyb3VwX2J5KEN1c3RvbWVyLlNlZ21lbnQsIE9yZGVyLlByaW9yaXR5KSAlPiUgDQogIGNvdW50KCkgJT4lIA0KICB1bmdyb3VwKCkgJT4lIA0KICBncm91cF9ieShDdXN0b21lci5TZWdtZW50KSAlPiUgDQogIG11dGF0ZShwY3QgPSAxMDAqbi9zdW0obikpICU+JSANCiAgbXV0YXRlKHBjdCA9IHJvdW5kKHBjdCwyKSkgJT4lIA0KICBtdXRhdGUoYmFyX3RleHQgPSBwYXN0ZTAocGN0LCAiJSIpKSAlPiUgDQogIHVuZ3JvdXAoKSAtPiBkZl9mb3JfcGxvdGluZw0KDQoNCmRmX2Zvcl9wbG90aW5nICU+JSAgDQogIGdncGxvdChhZXMoQ3VzdG9tZXIuU2VnbWVudCwgcGN0LCBmaWxsPSBPcmRlci5Qcmlvcml0eSkpKw0KICBnZW9tX2NvbCgpKw0KICBjb29yZF9mbGlwKCkrDQogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJ0b3AiKSsNCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gbXlfY29sb3JzWzY6MV0sIG5hbWUgPSAiIikrDQogIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoZmFtaWx5ID0gZm9udCkpICArDQogIGd1aWRlcyhmaWxsID0gZ3VpZGVfbGVnZW5kKHJldmVyc2UgPSBUUlVFKSkgKw0KICB0aGVtZShheGlzLnRleHQgPSBlbGVtZW50X3RleHQoY29sb3IgPSAiZ3JleTIwIiwgc2l6ZSA9IDEwLjIpKSsNCiAgdGhlbWUocGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTgpLCBwbG90LnN1YnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMSwgY29sb3IgPSAiZ3JleTIwIikpICsgDQogIGxhYnMoeCA9IE5VTEwsIHkgPSBOVUxMLCANCiAgICAgICB0aXRsZSA9Ik5vIHNpZ25pZmljYW50IERpZmZlcmVuY2Ugb2YgT3JkZXIgUHJpb3JpdHkgYnkgQ3VzdG9tZXIgU2VnbWVudCIpKw0KICBnZW9tX3RleHQoZGF0YT1kZl9mb3JfcGxvdGluZywgYWVzKGxhYmVsPWJhcl90ZXh0KSwNCiAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25fc3RhY2sodmp1c3Q9MC41KSkNCg0KDQpgYGANCg0KDQpgYGB7cn0NCmBgYA0KDQoNCmBgYHtyfQ0KYGBgDQoNCg0KYGBge3J9DQpgYGANCg0KDQpgYGB7cn0NCmBgYA0KDQoNCmBgYHtyfQ0KYGBgDQoNCg0KYGBge3J9DQpgYGANCg0KDQpgYGB7cn0NCmBgYA0KDQoNCmBgYHtyfQ0KYGBgDQoNCg0KYGBge3J9DQpgYGANCg0KDQpgYGB7cn0NCmBgYA0KDQoNCmBgYHtyfQ0KYGBgDQoNCg0KYGBge3J9DQpgYGANCg0KDQpgYGB7cn0NCmBgYA0KDQoNCmBgYHtyfQ0KYGBgDQoNCg0KYGBge3J9DQpgYGANCg0KDQpgYGB7cn0NCmBgYA0KDQoNCmBgYHtyfQ0KYGBgDQoNCg0KYGBge3J9DQpgYGANCg0KDQpgYGB7cn0NCmBgYA0KDQoNCmBgYHtyfQ0KYGBgDQoNCg0KYGBge3J9DQpgYGANCg0K