# Clear Workspace
rm(list = ls())

# Load library
library(dplyr)
library(ggplot2)

Bài 1

  1. Nếu hai cạnh của hình chữ nhật có chiều dài là a và b (đơn vị: m) thì diện tích của nó được tính bằng tính a*b. Hãy viết hàm tính toán diện tích của một hình chữ nhật khi biết chiều dài hai cạnh của nó.
area <- function(a,b) {
  y <- a*b
  return(y)
}

# TEST
area(3,5)
## [1] 15

Bài 2

  1. Bộ Công Thương đề xuất phương án tính giá điện mới tại https://tuoitre.vn/bieu-gia-dien-con-5-bac-tien-dien-co-tang-20200228233139405.htm. Hãy viết hàm:
  1. Tính giá điện theo phương án hiện hành.
giadien_cu <- function(x) {
  y <- case_when(x <= 50 ~ 1549*x,
                 x > 50 & x <= 100 ~ 1549*50 + 1600*(x-50),
                 x > 100 & x <= 200 ~ 1549*50 + 1600*50 + 1858*(x-100),
                 x > 200 & x <= 300 ~ 1549*50 + 1600*50 + 1858*100 + 2340*(x-200),
                 x > 300 & x <= 400 ~ 1549*50 + 1600*50 + 1858*100 + 2340*100 + 2615*(x-300),
                 TRUE ~ 1549*50 + 1600*50 + 1858*100 + 2340*100 + 2615*100 + 2701*(x-400))
  return(y)
}
  1. Tính giá điện theo phương án mới đề xuất.
giadien_moi <- function(x) {
  y <- case_when(x <= 100 ~ 1549*x,
                 x > 100 & x <= 200 ~ 1549*100 + 1858*(x-100),
                 x > 200 & x <= 400 ~ 1549*100 + 1858*100 + 2340*(x-200),
                 x > 400 & x <= 700 ~ 1549*100 + 1858*100 + 2340*200 + 2701*(x-400),
                 TRUE ~ 1549*100 + 1858*100 + 2340*200 + 2701*300 + 3105*(x-700))
  return(y)
}
  1. So sánh giá điện theo hai phương án ở các mức tiêu thụ 500, 1000, 1500, 2000, …, 9500, 10000 (cách nhau cứ 500).
library(tidyr)

x <- seq(50,1000,50)

df_sosanh <- tibble(Muc_tieu_thu = x, 
                    Gia_cu = giadien_cu(x),
                    Gia_moi = giadien_moi(x) , 
                    Chenh_lech = Gia_moi - Gia_cu)

df_sosanh
## # A tibble: 20 x 4
##    Muc_tieu_thu  Gia_cu Gia_moi Chenh_lech
##           <dbl>   <dbl>   <dbl>      <dbl>
##  1           50   77450   77450          0
##  2          100  157450  154900      -2550
##  3          150  250350  247800      -2550
##  4          200  343250  340700      -2550
##  5          250  460250  457700      -2550
##  6          300  577250  574700      -2550
##  7          350  708000  691700     -16300
##  8          400  838750  808700     -30050
##  9          450  973800  943750     -30050
## 10          500 1108850 1078800     -30050
## 11          550 1243900 1213850     -30050
## 12          600 1378950 1348900     -30050
## 13          650 1514000 1483950     -30050
## 14          700 1649050 1619000     -30050
## 15          750 1784100 1774250      -9850
## 16          800 1919150 1929500      10350
## 17          850 2054200 2084750      30550
## 18          900 2189250 2240000      50750
## 19          950 2324300 2395250      70950
## 20         1000 2459350 2550500      91150
df_sosanh  %>% 
  pivot_longer(cols = c("Gia_cu", "Gia_moi"), names_to = "Phuong_an", values_to = "Gia") -> df_price

Dựa vào bảng so sánh ta thấy cách tính mới sẽ khiến giá điện trở nên đắt hơn với những hộ tiêu thụ nhiều hơn 750 số (Thực ra khi nhìn vào hình dưới ta thấy từ số thứ 775 trở đi theo cách tính mới sẽ đắt hơn).

# Vẽ plot graph 

df_price  %>% 
    ggplot(aes(x = Muc_tieu_thu, y = Gia, group = Phuong_an, color = Phuong_an)) + 
    geom_line() + 
    geom_point()