Bộ dữ liệu population-and-demography là file csv, nên ta đọc file csv
library(csv)
vy1 <- read.csv("/Users/xuyenchi/Downloads/R Code/population-and-demography.csv") #ta tạo 1 bản sao từ file dữ liệu population-and-demography.csv bằng cách gán vào object vy1
Nhiệm vụ 3.1 thao tác trên datasets “population-and-demography.csv” là datasets thống kê dân số và nhân khẩu học của các quốc gia trên thế giới giai đoạn 1925-2021.
Là 1 data frame
Không có dữ liệu trống
Datasets có 18288 quan sát và 24 biến như sau:
Country : Tên Quốc Gia
Year: Năm lấy số liệu
Population: Dân số
Population of children under the age of 1: Dân số trẻ em dưới 1 tuổi
Population of children under the age of 5: Dân số trẻ em dưới 5 tuổi
Population of children under the age of 15: Dân số trẻ em dưới 15 tuổi
Population under the age of 25: Dân số dưới 25 tuổi
Population aged 15 to 64 years: Dân số từ 15 đến 64 tuổi
Population older than 15 years: Dân số lớn hơn 15 tuổi
Population older than 18 years: Dân số lớn hơn 18 tuổi
Population at age 1: Dân số 1 tuổi
Population aged 1 to 4 years: Dân số từ 1 đến 4 tuổi
Population aged 5 to 9 years: Dân số từ 5 đến 9 tuổi
Population aged 10 to 14 years: Dân số từ 10 đến 14 tuổi
Population aged 15 to 19 years: Dân số từ 15 đến 19 tuổi
Population aged 20 to 29 years: Dân số từ 20 đến 29 tuổi
Population aged 30 to 39 years: Dân số từ 30 đến 39 tuổi
Population aged 40 to 49 years: Dân số từ 40 đến 49 tuổi
Population aged 50 to 59 years: Dân số từ 50 đến 59 tuổi
Population aged 60 to 69 years: Dân số từ 60 đến 69 tuổi
Population aged 70 to 79 years: Dân số từ 70 đến 79 tuổi
Population aged 80 to 89 years: Dân số từ 80 đến 89 tuổi
Population aged 90 to 99 years: Dân số từ 90 đến 99 tuổi
Population older than 100 years: Dân số lớn hơn 100 tuổi
#Các thông tin được biết như : số lỗ hỏng/ bỏ trống (n_missing), số trung bình (mean), độ lệch chuẩn (sd) ,… Có thể xem thêm các thông tin khác bên dưới :
library(skimr)
skim(vy1)
Name | vy1 |
Number of rows | 18288 |
Number of columns | 24 |
_______________________ | |
Column type frequency: | |
character | 1 |
numeric | 23 |
________________________ | |
Group variables | None |
Variable type: character
skim_variable | n_missing | complete_rate | min | max | empty | n_unique | whitespace |
---|---|---|---|---|---|---|---|
Country | 0 | 1 | 4 | 59 | 0 | 254 | 0 |
Variable type: numeric
skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
---|---|---|---|---|---|---|---|---|---|---|
Year | 0 | 1 | 1985.50 | 20.78 | 1950 | 1967.75 | 1985.5 | 2003.25 | 2021 | ▇▇▇▇▇ |
Population | 0 | 1 | 126470436.62 | 588851230.77 | 1363 | 291591.50 | 3833997.5 | 16785463.50 | 7909295000 | ▇▁▁▁▁ |
Population.of.children.under.the.age.of.1 | 0 | 1 | 3133496.86 | 14167006.03 | 25 | 6663.75 | 88352.0 | 463000.50 | 139783730 | ▇▁▁▁▁ |
Population.of.children.under.the.age.of.5 | 0 | 1 | 14825709.57 | 67384368.62 | 136 | 31995.25 | 423784.5 | 2160046.50 | 690360700 | ▇▁▁▁▁ |
Population.of.children.under.the.age.of.15 | 0 | 1 | 41095227.11 | 188416973.54 | 416 | 89541.50 | 1186121.5 | 5905944.75 | 2015023400 | ▇▁▁▁▁ |
Population.under.the.age.of.25 | 0 | 1 | 63762600.31 | 294251869.66 | 623 | 139541.50 | 1843099.5 | 9025129.75 | 3239281000 | ▇▁▁▁▁ |
Population.aged.15.to.64.years | 0 | 1 | 77429505.08 | 367651914.71 | 748 | 170263.50 | 2246772.0 | 9641250.00 | 5132999000 | ▇▁▁▁▁ |
Population.older.than.15.years | 0 | 1 | 85372101.76 | 404866940.61 | 849 | 186716.00 | 2482104.0 | 10354345.50 | 5893678600 | ▇▁▁▁▁ |
Population.older.than.18.years | 0 | 1 | 78196242.04 | 372017010.49 | 752 | 166417.50 | 2238130.5 | 9239904.00 | 5516283000 | ▇▁▁▁▁ |
Population.at.age.1 | 0 | 1 | 3011212.81 | 13661998.41 | 26 | 6473.75 | 85824.0 | 440787.50 | 138478740 | ▇▁▁▁▁ |
Population.aged.1.to.4.years | 0 | 1 | 11692212.72 | 53238243.89 | 101 | 25269.25 | 334454.0 | 1697850.75 | 550970400 | ▇▁▁▁▁ |
Population.aged.5.to.9.years | 0 | 1 | 13598575.21 | 62534310.11 | 138 | 29406.25 | 392220.5 | 1947260.75 | 683611800 | ▇▁▁▁▁ |
Population.aged.10.to.14.years | 0 | 1 | 12670942.28 | 58775457.46 | 73 | 27879.50 | 363895.5 | 1796754.00 | 659934300 | ▇▁▁▁▁ |
Population.aged.15.to.19.years | 0 | 1 | 11782258.92 | 55126036.18 | 110 | 26296.50 | 336969.5 | 1626210.75 | 623576060 | ▇▁▁▁▁ |
Population.aged.20.to.29.years | 0 | 1 | 20872880.04 | 98860990.50 | 158 | 45050.75 | 609723.5 | 2758738.50 | 1210493200 | ▇▁▁▁▁ |
Population.aged.30.to.39.years | 0 | 1 | 17158704.11 | 82404600.95 | 137 | 36608.25 | 486290.5 | 2113149.00 | 1165207300 | ▇▁▁▁▁ |
Population.aged.40.to.49.years | 0 | 1 | 13622138.99 | 66008221.21 | 119 | 27440.25 | 364712.5 | 1556334.00 | 976407200 | ▇▁▁▁▁ |
Population.aged.50.to.59.years | 0 | 1 | 10177069.11 | 49288480.77 | 95 | 19649.75 | 264781.5 | 1203386.00 | 851356900 | ▇▁▁▁▁ |
Population.aged.60.to.69.years | 0 | 1 | 6801756.84 | 32712918.99 | 64 | 12603.00 | 168417.5 | 845242.75 | 598067140 | ▇▁▁▁▁ |
Population.aged.70.to.79.years | 0 | 1 | 3618710.03 | 17491538.61 | 31 | 6221.00 | 81824.0 | 436710.00 | 330491170 | ▇▁▁▁▁ |
Population.aged.80.to.89.years | 0 | 1 | 1195799.30 | 6238308.33 | 6 | 1818.75 | 20269.5 | 133380.50 | 131835590 | ▇▁▁▁▁ |
Population.aged.90.to.99.years | 0 | 1 | 142784.38 | 853350.39 | 0 | 154.75 | 1468.5 | 12499.00 | 22223974 | ▇▁▁▁▁ |
Population.older.than.100.years | 0 | 1 | 3107.72 | 20951.57 | 0 | 0.00 | 13.0 | 163.00 | 593166 | ▇▁▁▁▁ |
Thực hiện thao tác tao được kết quả như sau
Mô tả
Từ bộ dữ liệu vy1 ta chọn ra 5 quan sát “VietNam”, “Singapore”, ” Thailand”, ” China “,” Brazil”, biến (Population) và 5 biến độ tuổi (Population at age 1 ,Population aged 1 to 4 years , Population aged 5 to 9 years, Population aged 10 to 14 years, Population aged 15 to 19 years)
#Trước tiên ta phải load gói "dplyr"
library(dplyr)
Từ dữ liệu của vy1, ta lọc ra 5 quan sát để phân tích bao gồm “VietNam”, “Singapore”, ” Thailand “,” China “,” Brazil ” Ta thực hiện thao tác gán 5 quan sát đã lọc trên vào object mới là vy2, ta được object là vy2 với 360 quan sát, 24 biến
## 'data.frame': 360 obs. of 24 variables:
## $ Country : chr "Brazil" "Brazil" "Brazil" "Brazil" ...
## $ Year : int 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 ...
## $ Population : num 53955360 55591060 57283340 59025680 60827596 ...
## $ Population.of.children.under.the.age.of.1 : num 2202427 2262474 2330122 2397518 2466091 ...
## $ Population.of.children.under.the.age.of.5 : int 9271135 9703721 10133673 10535649 10889066 11218493 11557159 11900893 12249583 12601124 ...
## $ Population.of.children.under.the.age.of.15: int 22948400 23721236 24524590 25351908 26208452 27109490 28053348 29039014 30061448 31125664 ...
## $ Population.under.the.age.of.25 : num 33842700 34814736 35821396 36855850 37933924 ...
## $ Population.aged.15.to.64.years : num 29715820 30529458 31364428 32223218 33109830 ...
## $ Population.older.than.15.years : num 31006680 31869536 32758456 33673476 34618850 ...
## $ Population.older.than.18.years : num 27505950 28319134 29136452 29959340 30800602 ...
## $ Population.at.age.1 : num 1968467 2061117 2120678 2187130 2253537 ...
## $ Population.aged.1.to.4.years : num 7068708 7441247 7803551 8138131 8422975 ...
## $ Population.aged.5.to.9.years : int 7282716 7453709 7657140 7920233 8266990 8675847 9104762 9533124 9932900 10287535 ...
## $ Population.aged.10.to.14.years : int 6394549 6563805 6733777 6896027 7052397 7215150 7391428 7604997 7878966 8237004 ...
## $ Population.aged.15.to.19.years : int 5744748 5827411 5925576 6041745 6183604 6346724 6518866 6695025 6865973 7033547 ...
## $ Population.aged.20.to.29.years : int 9416008 9688214 9945827 10183273 10399165 10599787 10799921 11005270 11218459 11447523 ...
## $ Population.aged.30.to.39.years : int 6467732 6632691 6814222 7015250 7234115 7468277 7718088 7984792 8262649 8543295 ...
## $ Population.aged.40.to.49.years : int 4484450 4633755 4785094 4939106 5095145 5250527 5402317 5550635 5697891 5846370 ...
## $ Population.aged.50.to.59.years : int 2735368 2846229 2960496 3078266 3199684 3321947 3442092 3560971 3683017 3811109 ...
## $ Population.aged.60.to.69.years : int 1420468 1487586 1555531 1623743 1690789 1756694 1824637 1898019 1976591 2059246 ...
## $ Population.aged.70.to.79.years : int 550169 569750 590962 613876 639875 671034 707399 746249 785794 826090 ...
## $ Population.aged.80.to.89.years : int 166642 163218 161024 159811 159436 160289 162668 166007 169892 174484 ...
## $ Population.aged.90.to.99.years : int 21095 20681 19724 18405 17036 15969 15252 14610 13916 13207 ...
## $ Population.older.than.100.years : num 280 289 293 295 296 298 299 300 297 291 ...
Từ bộ dữ liệu vy1 ta chọn ra 5 quan sát “VietNam”, “Singapore”, ” Thailand”, ” China “,” Brazil”, biến (Population) và 5 biến độ tuổi (Population at age 1 ,Population aged 1 to 4 years , Population aged 5 to 9 years, Population aged 10 to 14 years, Population aged 15 to 19 years) và gán vào object vy3 với 360 quan sát và 8 biến
vy3 <- vy2 %>% select(Country,Year,Population,Population.at.age.1, Population.aged.1.to.4.years , Population.aged.5.to.9.years , Population.aged.10.to.14.years , Population.aged.15.to.19.years )
str(vy3)
## 'data.frame': 360 obs. of 8 variables:
## $ Country : chr "Brazil" "Brazil" "Brazil" "Brazil" ...
## $ Year : int 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 ...
## $ Population : num 53955360 55591060 57283340 59025680 60827596 ...
## $ Population.at.age.1 : num 1968467 2061117 2120678 2187130 2253537 ...
## $ Population.aged.1.to.4.years : num 7068708 7441247 7803551 8138131 8422975 ...
## $ Population.aged.5.to.9.years : int 7282716 7453709 7657140 7920233 8266990 8675847 9104762 9533124 9932900 10287535 ...
## $ Population.aged.10.to.14.years: int 6394549 6563805 6733777 6896027 7052397 7215150 7391428 7604997 7878966 8237004 ...
## $ Population.aged.15.to.19.years: int 5744748 5827411 5925576 6041745 6183604 6346724 6518866 6695025 6865973 7033547 ...
Ta thực hiện đổi tên để thao tác trở nên dễ dàng hơn:
Thực hiện thao tác đổi tên, ta được object vy3 với tên được đổi ngắn gọn hơn như bảng sau
names(vy3) <- c ( "Co","Y","Po","Po1","Po4","Po9","Po14","Po19")
str(vy3)
## 'data.frame': 360 obs. of 8 variables:
## $ Co : chr "Brazil" "Brazil" "Brazil" "Brazil" ...
## $ Y : int 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 ...
## $ Po : num 53955360 55591060 57283340 59025680 60827596 ...
## $ Po1 : num 1968467 2061117 2120678 2187130 2253537 ...
## $ Po4 : num 7068708 7441247 7803551 8138131 8422975 ...
## $ Po9 : int 7282716 7453709 7657140 7920233 8266990 8675847 9104762 9533124 9932900 10287535 ...
## $ Po14: int 6394549 6563805 6733777 6896027 7052397 7215150 7391428 7604997 7878966 8237004 ...
## $ Po19: int 5744748 5827411 5925576 6041745 6183604 6346724 6518866 6695025 6865973 7033547 ...
Ta thực hiện xóa bỏ biến Y giữ lại 7 biến cần lấy dữ liệu để phân tích và gán vào object vy4 Ta được object mới là vy4 với 360 quan sát và 7 biến
vy4 <- select(vy3,-Y)
str(vy4)
## 'data.frame': 360 obs. of 7 variables:
## $ Co : chr "Brazil" "Brazil" "Brazil" "Brazil" ...
## $ Po : num 53955360 55591060 57283340 59025680 60827596 ...
## $ Po1 : num 1968467 2061117 2120678 2187130 2253537 ...
## $ Po4 : num 7068708 7441247 7803551 8138131 8422975 ...
## $ Po9 : int 7282716 7453709 7657140 7920233 8266990 8675847 9104762 9533124 9932900 10287535 ...
## $ Po14: int 6394549 6563805 6733777 6896027 7052397 7215150 7391428 7604997 7878966 8237004 ...
## $ Po19: int 5744748 5827411 5925576 6041745 6183604 6346724 6518866 6695025 6865973 7033547 ...
Để mã hóa dữ liệu ta gọi gói tidyverse ra
library(tidyverse)
Thực hiện thao tác nếu trẻ em 1 tuổi lớn hơn 19% dân số thì tỉ lệ trẻ em dưới 1 tuổi cao, ngược lại là thấp Ta gán kết quả cho ted1
vy4$ted1 <- ifelse(vy4$Po1 > 0.19*vy4$Po, 'trẻ em dưới 1t cao', 'trẻ em dưới 1t thấp')
str(vy4$ted1)
## chr [1:360] "trẻ em dưới 1t thấp" "trẻ em dưới 1t thấp" ...
Thực hiện thao tác nếu như dân số của nước đó lớn hơn 1.000.000.000 dân thì được gọi là ” đông dân ” ngược lại nếu dân số nhỏ hơn “1.000.000.000” thì được gọi là ” thưa dân Gán kết quả cho dt
vy4$dt <- ifelse(vy4$Po>1000000000, 'đông dân', 'thưa dân' )
str(vy4$dt)
## chr [1:360] "thưa dân" "thưa dân" "thưa dân" "thưa dân" "thưa dân" ...
Gán kết quả mới cho dt1 sử dụng hàm case_when hỗ trợ mã hóa dữ liệu nhiều hơn 2 nếu như dân số của các nước nhỏ hơn 100000 dân thì được gọi là “thưa” , từ 100000 dân đến 1000000000 dân được gọi là “vừa”, trên 1000000000 gọi là “đông”
vy4$dt1 <- case_when(vy4$Po < 100000 ~ 'thưa', vy4$Po >= 100000 & vy4$Po < 1000000000 ~ 'vừa ', vy4$Po > 1000000000 ~ 'đông' )
str(vy4$dt1)
## chr [1:360] "vừa " "vừa " "vừa " "vừa " "vừa " "vừa " "vừa " "vừa " "vừa " ...
Sử dụng hàm cut dùng để chia dữ liệu của biến “Po14” từ “vy4” thành 3 tổ theo từng khoảng giá trị sau: từ 0 đến 1.000.000 là “kh1”, từ 1.000.000 đến 10.000.000 là “kh2”, từ 10.000.000 đến 100.000.000 là “kh3”.Gán kết quả cho cut1
vy4$cut1<- cut( vy4$Po14, breaks = c(0, 1000000,10000000, 100000000), labels= c ('kh1' , 'kh 2','kh3'))
str(vy4$cut1)
## Factor w/ 3 levels "kh1","kh 2","kh3": 2 2 2 2 2 2 2 2 2 2 ...
Thực hiện gán bảng tần số tần số - số lần xuất hiện của dữ liệu trong data ta sử dụng câu lệnh table . Dưới đây là kiểu tra tần số của biến “Po1”
ts <- table(vy4$Po1)
str(ts)
## 'table' int [1:359(1d)] 1 1 1 1 1 1 1 1 1 1 ...
## - attr(*, "dimnames")=List of 1
## ..$ : chr [1:359] "33721" "37600" "37680" "38873" ...
vy4$ts2 <- cut(vy4$Po4,3, labels = c('a','b','c'))
ts21 <- table(vy4$Co,vy4$ts2)
str(ts21)
## 'table' int [1:5, 1:3] 72 0 72 72 72 0 30 0 0 0 ...
## - attr(*, "dimnames")=List of 2
## ..$ : chr [1:5] "Brazil" "China" "Singapore" "Thailand" ...
## ..$ : chr [1:3] "a" "b" "c"
Lập biểu đồ nhánh và lá cho biến Po19 thuộc object vy4
Giải thích kết quả: trọng số tập trung ở 0 và không thể hiện ở 2,3,4
stem(vy4$Po19)
##
## The decimal point is 7 digit(s) to the right of the |
##
## 0 | 00000000000000000000000000000000000000000000000000000000000000000000+154
## 1 | 000111222333444444445555666666777777777777777888888888
## 2 |
## 3 |
## 4 |
## 5 | 2333333344457
## 6 | 048
## 7 | 389
## 8 | 00011233357788
## 9 | 02344667789
## 10 | 00345789
## 11 | 003467
## 12 | 00134577799
## 13 | 122
Lệnh Summary- một bản tóm tắt các giá trị đặc trưng đ về một đối tượng nào đó mà ta yêu cầu, ta có thể tính từng đặc trưng riêng hoặc có thể xem chỉ trong summary
Thực hiện lệnh summary trên vy4 về biến Po14
summary(vy4$Po1)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 33721 817992 1444494 5237800 3479732 28592234
Giải thích kết quả : phân tích biến “Po1” từ dữ liệu của data “vy4” ta được
sum(vy4$Po14)
## [1] 8626453280
Giải thích kết quả: Câu lệnh sum cho biết tổng dân số của biến dân số từ 10-14 tuổi từ dữ liệu “vy4” là 8626453280
mean(vy4$Po14,na.rm = T)
## [1] 23962370
Giải thích kết quả: Câu lệnh mean cho biết giá trị trung bình số dân của độ tuổi từ 10-14 tuổi là 23962370
length(vy4$Po14)
## [1] 360
Giải thích kết quả: câu lệnh lenghth cho biết độ dài biến Po14 là 360
var(vy4$Po14)
## [1] 1.381668e+15
Giải thích kết quả: câu lệnh var cho biết độ lệch hay còn gọi là phương sai của biến Po14 là 1.381668e+15
sd(vy4$Po14)
## [1] 37170792
Giải thích kết quả: câu lệnh sd cho biết độ lệch chuẩn của biến **Po14* là 37170792
median(vy4$Po14)
## [1] 6648791
Giải thích kết quả: Câu lệnh median cho biết trung vị dân số của 10-14 tuổi là 6648791 , nghĩa là 50% số liệu dân số của độ tuổi dưới 15 là nhỏ hơn 6648791 và 50% còn lại là lớn hơn 6648791
vy6 <- vy4 %>% group_by(Po1) %>% summarise(mean_of_Po14 = mean(Po14))
datatable(vy6)
Giải thích kết quả: gán kết quả cho vy6 về giá trị trung bình của dân số từ 10-14 tuổi dựa vào biến dân số 1 tuổi
vy7 <- vy3 %>% group_by(Y) %>% summarise(n = n(),mean_of_Po14 = mean(Po14))
datatable(vy7)
Giải thích kết quả: giá trị trung bình của tổng dân số từ 10-14 tuổi (biến Po14) theo năm (biến Y) trong đó n=n() cho biết số lần năm đó xuất hiện ( hay chính là tổng số quốc gia, khu vực )
vy8 <- vy3 %>% group_by(Y) %>% summarise(med_of_Po14= median(Po14))
datatable(vy8)
Giải thích kết quả:vy8 là kết quả của trung vị của tổng dân số từ 10-14 tuổi (biến Po14) theo năm (biến Y)
vy9 <- vy4 %>% group_by(Co) %>% summarise(mean_of_ = mean(Po))
vy9
Co | mean_of_ |
---|---|
Brazil | 136542332 |
China | 1035531645 |
Singapore | 3141772 |
Thailand | 48988953 |
Vietnam | 60763252 |
Giải thích kết quả: vy9 là kết quả giá trị trung bình của tổng dân số được tính theo tên quốc gia
vy10 <- vy3 %>% group_by(Y,Co) %>% summarise(n = n(),mean_of_Po = mean(Po),.groups = 'drop')
datatable(vy10)
Giải thích kết quả : vy10 là giá trị trung bình của tổng dân số theo từng năm của từng quốc gia
Nhiệm vụ 3.2 thực hiện thao tác trên datasets Financial Sample Excel, là 1 dataset thống kê tình hình tài chính nổi bật của một số thị trường trên thế giới giai đoạn 2013-2014.
Là 1 dataframe Không có dữ liệu trống Datasets có 1006 quan sát và 16 biến như sau:
Đọc bộ dữ liệu
library(openxlsx)
vyvy <- read.xlsx("/Users/xuyenchi/Downloads/R Code/Financial Sample.xlsx")
str(vyvy)
## 'data.frame': 1006 obs. of 16 variables:
## $ Segment : chr "Government" "Government" "Midmarket" "Midmarket" ...
## $ Country : chr "Canada" "Germany" "France" "Germany" ...
## $ Product : chr "Carretera" "Carretera" "Carretera" "Carretera" ...
## $ Discount.Band : chr "None" "None" "None" "None" ...
## $ Units.Sold : num 1618 1321 2178 888 2470 ...
## $ Manufacturing.Price: num 3 3 3 3 3 3 5 5 5 5 ...
## $ Sale.Price : num 20 20 15 15 15 350 15 12 20 12 ...
## $ Gross.Sales : num 32370 26420 32670 13320 37050 ...
## $ Discounts : num 0 0 0 0 0 0 0 0 0 0 ...
## $ Sales : num 32370 26420 32670 13320 37050 ...
## $ COGS : num 16185 13210 21780 8880 24700 ...
## $ Profit : num 16185 13210 10890 4440 12350 ...
## $ Date : num 41640 41640 41791 41791 41791 ...
## $ Month.Number : num 1 1 6 6 6 12 3 6 6 6 ...
## $ Month.Name : chr "January" "January" "June" "June" ...
## $ Year : chr "2014" "2014" "2014" "2014" ...
is.data.frame(vyvy)
## [1] TRUE
library(skimr)
skim(vyvy)
Name | vyvy |
Number of rows | 1006 |
Number of columns | 16 |
_______________________ | |
Column type frequency: | |
character | 6 |
numeric | 10 |
________________________ | |
Group variables | None |
Variable type: character
skim_variable | n_missing | complete_rate | min | max | empty | n_unique | whitespace |
---|---|---|---|---|---|---|---|
Segment | 0 | 1 | 9 | 16 | 0 | 5 | 0 |
Country | 0 | 1 | 6 | 24 | 0 | 5 | 0 |
Product | 0 | 1 | 3 | 9 | 0 | 6 | 0 |
Discount.Band | 0 | 1 | 3 | 6 | 0 | 4 | 0 |
Month.Name | 0 | 1 | 3 | 9 | 0 | 12 | 0 |
Year | 0 | 1 | 4 | 4 | 0 | 2 | 0 |
Variable type: numeric
skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
---|---|---|---|---|---|---|---|---|---|---|
Units.Sold | 0 | 1 | 1639.26 | 885.62 | 200.00 | 905.00 | 1566.00 | 2339.50 | 4492.5 | ▇▇▇▂▁ |
Manufacturing.Price | 0 | 1 | 101.69 | 110.35 | 3.00 | 5.00 | 10.00 | 250.00 | 260.0 | ▇▁▂▁▅ |
Sale.Price | 0 | 1 | 116.81 | 136.77 | 7.00 | 12.00 | 20.00 | 300.00 | 350.0 | ▇▂▁▁▃ |
Gross.Sales | 0 | 1 | 175936.31 | 245508.65 | 1799.00 | 18176.25 | 38592.50 | 269500.00 | 1207500.0 | ▇▂▁▁▁ |
Discounts | 0 | 1 | 14832.22 | 24110.38 | 0.00 | 1132.80 | 3559.05 | 19950.00 | 149677.5 | ▇▁▁▁▁ |
Sales | 0 | 1 | 161104.09 | 225860.91 | 1655.08 | 16748.55 | 35540.20 | 243346.88 | 1159200.0 | ▇▂▁▁▁ |
COGS | 0 | 1 | 139965.38 | 198115.49 | 918.00 | 8083.50 | 24490.00 | 236465.00 | 950625.0 | ▇▂▁▁▁ |
Profit | 0 | 1 | 21138.70 | 38428.09 | -40617.50 | 2750.00 | 9242.60 | 21272.24 | 262200.0 | ▇▂▁▁▁ |
Date | 0 | 1 | 41756.63 | 149.55 | 41518.00 | 41640.00 | 41760.00 | 41913.00 | 41974.0 | ▆▅▅▂▇ |
Month.Number | 0 | 1 | 7.84 | 3.44 | 1.00 | 5.00 | 9.00 | 10.00 | 12.0 | ▃▂▂▂▇ |
skim_variable: tên biến
n_missing: số dữ liệu trống
complete_rate: tỉ lệ biến có dữ liệu
mean: giá trị trung bình
sd: độ lệch chuẩn
p0: giá trị nhỏ nhất
p25: phân vị thứ nhất
p50: trung vị
p75: phân vị thứ ba
p100: giá trị lớn nhất
his: biểu đồ histogram
**Để dễ dàng phân tích dữ liệu ta chỉ lấy 1 phần nhỏ dữ liệu từ i để phân tích
vyvy1 <- vyvy[1:200,1:5]
datatable(vyvy1)
Ta đổi tên để dễ thao tác - S :*Segment: thị trường - Cou :Country: quốc gia - Pro: Product: sản phẩm tài chính - Dis: Discount Band: đánh giá mức độ rủi ro - Uni: Units Sold:** số lượng sản phẩm hoặc dịch vụ đã bán
names(vyvy1) <- c('S','Cou','Pro','Dis','Uni')
str(vyvy1)
## 'data.frame': 200 obs. of 5 variables:
## $ S : chr "Government" "Government" "Midmarket" "Midmarket" ...
## $ Cou: chr "Canada" "Germany" "France" "Germany" ...
## $ Pro: chr "Carretera" "Carretera" "Carretera" "Carretera" ...
## $ Dis: chr "None" "None" "None" "None" ...
## $ Uni: num 1618 1321 2178 888 2470 ...
library(tidyverse)
vyvy1$gt <- ifelse(vyvy1$Uni > 1000, 'cao', 'thấp')
Gán kết quả mới cho “sl” sử dụng hàm case_when hỗ trợ mã hóa dữ liệu nhiều hơn 2 nếu như giá trị nhỏ hơn 100 thì được gọi là “ít” , từ 100 dân đến 1000 được gọi là “vừa”, trên 1000 gọi là “nhiều”
Gán kết quả mới cho “sl0” sử dụng hàm cut dùng để chia dữ liệu của biến “V” từ “i1” thành 3 tổ theo từng khoảng giá trị sau: từ 0 đến 10 là “kho1”, từ 10 đến 50 là “kho2”, từ 50 đến 100 là “kho3”.
vyvy1$sl3 <- cut( vyvy1$Uni, breaks = c(0, 10,50,100), labels= c ('kho 1','kho 2','kho 3'))
i2 <- table(vyvy1$Uni)
str(i2)
## 'table' int [1:152(1d)] 2 1 1 1 1 2 1 1 1 2 ...
## - attr(*, "dimnames")=List of 1
## ..$ : chr [1:152] "214" "218" "259" "263" ...
**Giải thích kết quả** : biến "Uni" của "vyvy1" được chia làm 3 nhóm (210,1.64e+03] 99 quan sát (1.64e+03,3.07e+03]93 quan sát (3.07e+03,4.5e+03] 8 quan sát
- Lập biểu đồ nhánh và lá của biến "Uni"từ dữ liệu của data vyvy1
```r
stem(vyvy1$Uni)
##
## The decimal point is 2 digit(s) to the right of the |
##
## 2 | 112667779235567
## 4 | 99445
## 6 | 224666679993344577999
## 8 | 01138991122244679
## 10 | 11366688044444
## 12 | 1499002378
## 14 | 0015911113557777
## 16 | 246911334679
## 18 | 0022236670000222345555679
## 20 | 0111223379455555566688
## 22 | 168006
## 24 | 3777802238
## 26 | 77335
## 28 | 24455558812779
## 30 |
## 32 |
## 34 | 5
## 36 |
## 38 | 565
## 40 |
## 42 | 245
## 44 | 9
mean(vyvy1$Uni,na.rm = T)
## [1] 1641.975
Giải thích kết quả: Câu lệnh mean cho biết giá trị trung bình của cột biến Uni là 1641.975
length(vyvy1$Uni)
## [1] 200
Giải thích kết quả: câu lệnh lenghth cho biết độ dài biến V là 200
var(vyvy1$Uni)
## [1] 793574.4
Giải thích kết quả: câu lệnh var cho biết độ lệch hay còn gọi là phương sai của biến Uni 793574.4
sd(vyvy1$Uni)
## [1] 890.8279
Giải thích kết quả: câu lệnh sd cho biết độ lệch chuẩn của biến Uni là 890.8279
median(vyvy1$Uni)
## [1] 1651
Giải thích kết quả: Câu lệnh median cho biết trung vị của Uni là 1651 , nghĩa là 50% số số quốc gia nhỏ hơn 1651 và 50% còn lại là lớn hơn 1651