“21:20:36, 20 - 01 - 2024”

Nhiệm vụ 2.1

1. Tóm tắt

Thực hiện thao tác một số lệnh cơ bản và rút trích dữ liệu từ File Excel “Các yếu tố nguy cơ gây gãy xương.xlsx”. File Excel này phân tích các yếu tố có nguy cơ gây gãy xương.

  • id: Mã số bệnh nhân (139 bệnh nhân)

  • fx: Có/Không gãy xương

  • age: Tuổi

  • bmi: Body mass index (tính bằng trong lượng/chiều cao)

  • bmd: Bord mineral (Mật độ chất khoáng trong xương)

  • ictp: Chỉ số sinh hóa đo lường hoạt tính xương

  • pinp: Chỉ số sinh hóa đo lường hoạt tính xương

2. Đọc dữ liệu từ file Excel

#Load gói Library bằng câu lệnh
library(xlsx) 
#Gán dữ liệu file excel vào object 'ltn' và đọc dữ liệu
ltn <- read.xlsx("D:/lamtamnhu/Các yếu tố nguy cơ gây gãy xương.xlsx", sheetIndex = 1, header = T) 

3. Bộ dữ liệu trees

3.1 Thông tin tổng quan

#KIỂM TRA 'nv2' CÓ PHẢI DATA FRAME HAY KHÔNG. NẾU ĐÚNG THÌ TRẢ KẾT QUẢ LÀ TRUE VÀ NGƯỢC LẠI
is.data.frame(ltn) 
## [1] TRUE
#SỐ CỘT Cộ ỦA ltn
length(ltn) 
## [1] 9
#TÊN CÁC CỘT CỦA ltn
names(ltn)
## [1] "id"    "fx"    "age"   "bmi"   "bmd"   "ictp"  "pinp"  "NA."   "NA..1"
#SỐ HÀNG VÀ SỐ CỘT CỦA ltn
dim(ltn) 
## [1] 139   9
#THỐNG KÊ MÔ TẢ
library(skimr)
skim(ltn)
Data summary
Name ltn
Number of rows 139
Number of columns 9
_______________________
Column type frequency:
character 4
numeric 5
________________________
Group variables None

Variable type: character

skim_variable n_missing complete_rate min max empty n_unique whitespace
bmd 0 1.00 1 5 0 121 0
ictp 0 1.00 1 5 0 136 0
NA. 132 0.05 2 4 0 7 0
NA..1 132 0.05 4 48 0 6 0

Variable type: numeric

skim_variable n_missing complete_rate mean sd p0 p25 p50 p75 p100 hist
id 0 1 70.00 40.27 1.00 35.50 70.00 104.50 139.00 ▇▇▇▇▇
fx 0 1 0.27 0.45 0.00 0.00 0.00 1.00 1.00 ▇▁▁▁▃
age 0 1 71.05 5.27 59.00 67.00 70.00 74.00 89.00 ▂▇▃▂▁
bmi 0 1 26.48 3.43 19.37 24.32 25.82 28.53 38.08 ▂▇▅▁▁
pinp 0 1 40.68 15.12 16.13 29.65 37.53 46.50 104.58 ▆▇▂▁▁

3.2 Một số thông tin mở rộng của bộ dữ liệu

#Lấy 10 dòng đầu tiên
head(ltn, 10)
##    id fx age     bmi   bmd  ictp   pinp  NA.
## 1   1  1  79 24.7252 0.818  9.17 37.383 <NA>
## 2   2  1  89 25.9909 0.871 7.561 24.685 <NA>
## 3   3  1  70 25.3934 1.358 5.347 40.620   id
## 4   4  1  88 23.2254 0.714 7.354 56.782   fx
## 5   5  1  85 24.6097 0.748  6.76 58.358  age
## 6   6  0  68 25.0762 0.935 4.939 67.123  bmi
## 7   7  0  70 19.8839  1.04 4.321 26.399  bmd
## 8   8  0  69 25.0593 1.002 4.212 47.515 ictp
## 9   9  0  74 25.6544 0.987 5.605 26.132 pinp
## 10 10  0  79 19.9594 0.863 5.204 60.267 <NA>
##                                               NA..1
## 1                                              <NA>
## 2                                              <NA>
## 3                                   Mã số bệnh nhân
## 4                             Có/không có gãy xương
## 5                                              Tuổi
## 6  Body mass index (tính bằng trọng lượng/chiều cao
## 7     Bond mineral (Mật độ chất khoáng trong xương)
## 8          Chỉ số sinh hoá đo lường hoạt tính xương
## 9          Chỉ số sinh hoá đo lường hoạt tính xương
## 10                                             <NA>
#Lấy 10 dòng cuối cùng
tail(ltn, 10) 
##      id fx age     bmi   bmd  ictp    pinp  NA. NA..1
## 130 130  0  69 25.6173 0.944 6.512  49.557 <NA>  <NA>
## 131 131  0  67 30.3871 1.245 3.603  46.769 <NA>  <NA>
## 132 132  0  67 33.6901 1.142 3.666  38.839 <NA>  <NA>
## 133 133  0  68 28.4005  0.86  2.89  32.140 <NA>  <NA>
## 134 134  1  59 25.4017 1.172     . 104.579 <NA>  <NA>
## 135 135  0  66 22.5710 0.956 3.354  36.253 <NA>  <NA>
## 136 136  1  71 24.4473 0.918 4.633  53.881 <NA>  <NA>
## 137 137  0  64 38.0762 1.086 5.043  32.835 <NA>  <NA>
## 138 138  1  80 23.3887 0.875 4.086  23.837 <NA>  <NA>
## 139 139  0  67 25.9455 0.983 4.328  71.334 <NA>  <NA>
#Xem cấu trúc của bộ dữ liệu
str(ltn)
## 'data.frame':    139 obs. of  9 variables:
##  $ id   : num  1 2 3 4 5 6 7 8 9 10 ...
##  $ fx   : num  1 1 1 1 1 0 0 0 0 0 ...
##  $ age  : num  79 89 70 88 85 68 70 69 74 79 ...
##  $ bmi  : num  24.7 26 25.4 23.2 24.6 ...
##  $ bmd  : chr  "0.818" "0.871" "1.358" "0.714" ...
##  $ ictp : chr  "9.17" "7.561" "5.347" "7.354" ...
##  $ pinp : num  37.4 24.7 40.6 56.8 58.4 ...
##  $ NA.  : chr  NA NA "id" "fx" ...
##  $ NA..1: chr  NA NA "Mã số bệnh nhân" "Có/không có gãy xương" ...

3.3 Kiểm tra tính hoàn chỉnh của bộ dữ liệu

#Xác định dữ liệu trống: Ô có dữ liệu là FALSE, ô không có dữ liệu là TRUE
is.na(ltn)
##           id    fx   age   bmi   bmd  ictp  pinp   NA. NA..1
##   [1,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##   [2,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##   [3,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   [4,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   [5,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   [6,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   [7,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   [8,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##   [9,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##  [10,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [11,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [12,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [13,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [14,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [15,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [16,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [17,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [18,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [19,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [20,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [21,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [22,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [23,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [24,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [25,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [26,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [27,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [28,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [29,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [30,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [31,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [32,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [33,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [34,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [35,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [36,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [37,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [38,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [39,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [40,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [41,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [42,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [43,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [44,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [45,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [46,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [47,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [48,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [49,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [50,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [51,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [52,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [53,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [54,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [55,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [56,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [57,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [58,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [59,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [60,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [61,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [62,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [63,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [64,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [65,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [66,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [67,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [68,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [69,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [70,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [71,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [72,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [73,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [74,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [75,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [76,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [77,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [78,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [79,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [80,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [81,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [82,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [83,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [84,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [85,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [86,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [87,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [88,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [89,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [90,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [91,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [92,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [93,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [94,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [95,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [96,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [97,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [98,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
##  [99,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
## [100,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
## [101,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
## [102,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
## [103,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
## [104,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
## [105,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
## [106,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
## [107,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
## [108,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
## [109,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
## [110,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
## [111,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
## [112,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
## [113,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
## [114,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
## [115,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
## [116,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
## [117,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
## [118,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
## [119,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
## [120,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
## [121,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
## [122,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
## [123,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
## [124,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
## [125,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
## [126,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
## [127,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
## [128,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
## [129,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
## [130,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
## [131,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
## [132,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
## [133,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
## [134,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
## [135,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
## [136,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
## [137,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
## [138,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
## [139,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
#Tổng số ô trống
sum(is.na(ltn))
## [1] 264
#Xác định vị trí của các ô trống
which(is.na(ltn))
##   [1]  974  975  983  984  985  986  987  988  989  990  991  992  993  994  995
##  [16]  996  997  998  999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010
##  [31] 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025
##  [46] 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040
##  [61] 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055
##  [76] 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070
##  [91] 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085
## [106] 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100
## [121] 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1122
## [136] 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137
## [151] 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152
## [166] 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167
## [181] 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182
## [196] 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197
## [211] 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212
## [226] 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227
## [241] 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242
## [256] 1243 1244 1245 1246 1247 1248 1249 1250 1251

4. Rút trích dữ liệu

#Đặt lại têN cho các cột của dữ liệu
names(ltn) <- c('i','f','a','b','d','c','p','m','n')
names(ltn)
## [1] "i" "f" "a" "b" "d" "c" "p" "m" "n"
#Gán a1 là giá trị hàng 2 cột 2
a1 <- ltn[2,2]
str(a1)
##  num 1
#Gán a2 là giá trị 7 hàng đầu tiên cột bmd
a2 <- ltn[1:7,5]
str(a2)
##  chr [1:7] "0.818" "0.871" "1.358" "0.714" "0.748" "0.935" "1.04"
#Gán A là giá trị toàn bột hàng age của ltn
A <- ltn$a
str(A)
##  num [1:139] 79 89 70 88 85 68 70 69 74 79 ...
#Gán B là giá trị toàn bộ cột age và tất cả các hàng của ltn
B <- ltn[ ,3]
str(B)
##  num [1:139] 79 89 70 88 85 68 70 69 74 79 ...
#Gán C là giá trị toàn bộ hàng 6 và tất cả các cột của ltn
C <- ltn[6, ]
str(C)
## 'data.frame':    1 obs. of  9 variables:
##  $ i: num 6
##  $ f: num 0
##  $ a: num 68
##  $ b: num 25.1
##  $ d: chr "0.935"
##  $ c: chr "4.939"
##  $ p: num 67.1
##  $ m: chr "bmi"
##  $ n: chr "Body mass index (tính bằng trọng lượng/chiều cao"
#Gán ltn1 là giá trị của cột id và cột bmi và tất cả các hàng của ltn
ltn1 <- ltn[ ,c(1,4)]
str(ltn1)
## 'data.frame':    139 obs. of  2 variables:
##  $ i: num  1 2 3 4 5 6 7 8 9 10 ...
##  $ b: num  24.7 26 25.4 23.2 24.6 ...
#Gán ltn2 là giá trị từ hàng 2 đến hàng 9 và tất cả các cột của ltn
ltn2 <- ltn[2:9, ]
str(ltn2)
## 'data.frame':    8 obs. of  9 variables:
##  $ i: num  2 3 4 5 6 7 8 9
##  $ f: num  1 1 1 1 0 0 0 0
##  $ a: num  89 70 88 85 68 70 69 74
##  $ b: num  26 25.4 23.2 24.6 25.1 ...
##  $ d: chr  "0.871" "1.358" "0.714" "0.748" ...
##  $ c: chr  "7.561" "5.347" "7.354" "6.76" ...
##  $ p: num  24.7 40.6 56.8 58.4 67.1 ...
##  $ m: chr  NA "id" "fx" "age" ...
##  $ n: chr  NA "Mã số bệnh nhân" "Có/không có gãy xương" "Tuổi" ...
#Gán ltn3 là giá trị của các hàng 3,5,7,21 và tất cả các cột của ltn
ltn3 <- ltn[c(3,5,7,21), ]
str(ltn3)
## 'data.frame':    4 obs. of  9 variables:
##  $ i: num  3 5 7 21
##  $ f: num  1 1 0 1
##  $ a: num  70 85 70 74
##  $ b: num  25.4 24.6 19.9 23.1
##  $ d: chr  "1.358" "0.748" "1.04" "0.597"
##  $ c: chr  "5.347" "6.76" "4.321" "4.835"
##  $ p: num  40.6 58.4 26.4 35.1
##  $ m: chr  "id" "age" "bmd" NA
##  $ n: chr  "Mã số bệnh nhân" "Tuổi" "Bond mineral (Mật độ chất khoáng trong xương)" NA
#Gán ltn4 là gí trị của các hàng 2,3,6,18 và các cột 2,3 của ltn
ltn4 <- ltn[c(2,3,6,18),c(2,3)]
str(ltn4)
## 'data.frame':    4 obs. of  2 variables:
##  $ f: num  1 1 0 0
##  $ a: num  89 70 68 69
#Gán ltn5 là giá trị các hàng age có dữ liệu >= 60 và tất cả các cột của ltn
ltn5 <- ltn[ltn$a >= 60, ]
str(ltn5)
## 'data.frame':    138 obs. of  9 variables:
##  $ i: num  1 2 3 4 5 6 7 8 9 10 ...
##  $ f: num  1 1 1 1 1 0 0 0 0 0 ...
##  $ a: num  79 89 70 88 85 68 70 69 74 79 ...
##  $ b: num  24.7 26 25.4 23.2 24.6 ...
##  $ d: chr  "0.818" "0.871" "1.358" "0.714" ...
##  $ c: chr  "9.17" "7.561" "5.347" "7.354" ...
##  $ p: num  37.4 24.7 40.6 56.8 58.4 ...
##  $ m: chr  NA NA "id" "fx" ...
##  $ n: chr  NA NA "Mã số bệnh nhân" "Có/không có gãy xương" ...
#Gán ltn6 là giá trị của các hàng age >= 50 và <= 70 và tất cả các cột của ltn
ltn6 <- ltn[ltn$a >= 50 & ltn$a <= 70, ]
str(ltn6)
## 'data.frame':    75 obs. of  9 variables:
##  $ i: num  3 6 7 8 13 14 16 18 24 25 ...
##  $ f: num  1 0 0 0 1 0 0 0 0 1 ...
##  $ a: num  70 68 70 69 62 69 67 69 70 69 ...
##  $ b: num  25.4 25.1 19.9 25.1 20.3 ...
##  $ d: chr  "1.358" "0.935" "1.04" "1.002" ...
##  $ c: chr  "5.347" "4.939" "4.321" "4.212" ...
##  $ p: num  40.6 67.1 26.4 47.5 51.1 ...
##  $ m: chr  "id" "bmi" "bmd" "ictp" ...
##  $ n: chr  "Mã số bệnh nhân" "Body mass index (tính bằng trọng lượng/chiều cao" "Bond mineral (Mật độ chất khoáng trong xương)" "Chỉ số sinh hoá đo lường hoạt tính xương" ...
#Gán ltn7 là giá trị của hàng age là 79 hoặc 80 và tất cả các cột của ltn
ltn7 <- ltn[ltn$a == 79 | ltn$a == 80, ]
str(ltn7)
## 'data.frame':    10 obs. of  9 variables:
##  $ i: num  1 10 27 28 31 32 43 45 124 138
##  $ f: num  1 0 1 1 1 0 0 1 0 1
##  $ a: num  79 79 80 79 80 79 80 79 80 80
##  $ b: num  24.7 20 24.7 26.9 28.4 ...
##  $ d: chr  "0.818" "0.863" "0.859" "0.867" ...
##  $ c: chr  "9.17" "5.204" "5.706" "3.563" ...
##  $ p: num  37.4 60.3 37.5 43.9 33.4 ...
##  $ m: chr  NA NA NA NA ...
##  $ n: chr  NA NA NA NA ...

5. Rút trích dữ liệu với filter và select

library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
#Gán ltn8 để trích dữ liệu age >= 50 và id <= 100
ltn8 <- filter(ltn, ltn$a>= 50 & ltn$i<= 100)
str(ltn8)
## 'data.frame':    100 obs. of  9 variables:
##  $ i: num  1 2 3 4 5 6 7 8 9 10 ...
##  $ f: num  1 1 1 1 1 0 0 0 0 0 ...
##  $ a: num  79 89 70 88 85 68 70 69 74 79 ...
##  $ b: num  24.7 26 25.4 23.2 24.6 ...
##  $ d: chr  "0.818" "0.871" "1.358" "0.714" ...
##  $ c: chr  "9.17" "7.561" "5.347" "7.354" ...
##  $ p: num  37.4 24.7 40.6 56.8 58.4 ...
##  $ m: chr  NA NA "id" "fx" ...
##  $ n: chr  NA NA "Mã số bệnh nhân" "Có/không có gãy xương" ...
#Gán ltn9 để lấy 3 cột id, fx, age
ltn9 <- select(ltn,i,f,a)
str(ltn9)
## 'data.frame':    139 obs. of  3 variables:
##  $ i: num  1 2 3 4 5 6 7 8 9 10 ...
##  $ f: num  1 1 1 1 1 0 0 0 0 0 ...
##  $ a: num  79 89 70 88 85 68 70 69 74 79 ...
#Gán ltn10 để trích dữ liệu id>60, age>40 và chỉ lấy 5 cột id, fx, age, bmi, bmd
ltn10 <- filter(ltn, i>60 & a>40) %>% select(i,f,a,b,d)
str(ltn10)
## 'data.frame':    79 obs. of  5 variables:
##  $ i: num  61 62 63 64 65 66 67 68 69 70 ...
##  $ f: num  0 0 0 0 1 0 0 0 0 1 ...
##  $ a: num  74 71 65 77 67 66 70 70 69 65 ...
##  $ b: num  28.4 29.1 24 23 33.4 ...
##  $ d: chr  "1.045" "1.066" "0.841" "1.015" ...
#Thêm một cột xác định có gãy xương hay không gãy xương

Nhiệm vụ 2.2

1. Tóm tắt

Bộ dữ liệu điều tra các yếu tố ảnh hưởng đến mức lương của Nhà khoa học dữ liệu. Để đạt được điều này, một tập dữ liệu chứa nhiều biến có liên quan đã được sử dụng gồm 11 biến trong đó có 8 biến định tính và 3 biến định lượng

Bộ dữ liệu gồm các biến sau:

1.    Job_title: Vai trò này đã được thực hiện trong năm

2.    Experience_level: Mức độ kinh nghiệm trong công việc trong năm

·        EN > Sơ cấp/ Sơ cấp

·        MI  > Trung cấp/ Trung cấp

·        SE > Cao cấp/ Chuyên gia

·        EX > Cấp điều hành/ Giám đốc

3.    Employment_type: Loại công việc cho vai trò này

·        PT > Bán thời gian

·        FT > Toàn thời gian

·        CT > Hợp đồng

·        FL > Làm nghề tự do

4.    Work_models : Tổng khối lượng công việc được thực hiện từ xa

5.    Work_year: Năm lương được trả

6.    Employee_residence: Quốc gia cư trú chính của nhân viên trong năm làm việc là mã quốc gia

7.    Salary: Tổng số tiền lương gộp được trả

8.    Salary_curency: Đơn vị tiền tệ của tiền lương được trả dưới dạng mã tiền tệ

9.    Salaryinusd: Lương tính bằng USD

10.  Company_location: Quốc gia của văn phòng chính phủ hoặc chi nhánh hợp đồng của người sử dụng lao động

11.  Company_size: Quy mô công ty

2. Đọc dữ liệu từ file Excel

#Load gói Library bằng câu lệnh 
library(xlsx)  
#Gán dữ liệu file excel vào object 'dss' và đọc dữ liệu 
dss <- read.xlsx("D:/lamtamnhu/data_science_salaries.xlsx", sheetIndex = 1, header = T)  

3. Bộ dữ liệu trees

3.1 Thông tin tổng quan

#KIỂM TRA 'dss' CÓ PHẢI DATA FRAME HAY KHÔNG. NẾU ĐÚNG THÌ TRẢ KẾT QUẢ LÀ TRUE VÀ NGƯỢC LẠI 
is.data.frame(dss) 
## [1] TRUE
#SỐ CỘT Cộ ỦA dss
length(dss) 
## [1] 11
#TÊN CÁC CỘT CỦA dss 
names(dss)
##  [1] "job_title"          "experience_level"   "employment_type"   
##  [4] "work_models"        "work_year"          "employee_residence"
##  [7] "salary"             "salary_currency"    "salary_in_usd"     
## [10] "company_location"   "company_size"
#SỐ HÀNG VÀ SỐ CỘT CỦA dss 
dim(dss) 
## [1] 11087    11
#THỐNG KÊ MÔ TẢ 
library(skimr) 
skim(dss) 
Data summary
Name dss
Number of rows 11087
Number of columns 11
_______________________
Column type frequency:
character 8
numeric 3
________________________
Group variables None

Variable type: character

skim_variable n_missing complete_rate min max empty n_unique whitespace
job_title 0 1 9 40 0 132 0
experience_level 0 1 9 15 0 4 0
employment_type 0 1 8 9 0 4 0
work_models 0 1 6 7 0 3 0
employee_residence 0 1 4 24 0 87 0
salary_currency 0 1 3 3 0 22 0
company_location 0 1 4 24 0 75 0
company_size 0 1 5 6 0 3 0

Variable type: numeric

skim_variable n_missing complete_rate mean sd p0 p25 p50 p75 p100 hist
work_year 0 1 2022.85 0.57 2020 2023 2023 2023 2024 ▁▁▂▇▁
salary 0 1 169572.30 408031.15 14000 105000 142200 188050 30400000 ▇▁▁▁▁
salary_in_usd 0 1 149614.98 66704.33 15000 104000 142000 185900 750000 ▇▅▁▁▁

3.2 Một số thông tin mở rộng của bộ dữ liệu

#Lấy 10 dòng đầu tiên 
head(dss, 10)
##           job_title experience_level employment_type work_models work_year
## 1     Data Engineer        Mid-level       Full-time      Remote      2024
## 2     Data Engineer        Mid-level       Full-time      Remote      2024
## 3    Data Scientist     Senior-level       Full-time      Remote      2024
## 4    Data Scientist     Senior-level       Full-time      Remote      2024
## 5      BI Developer        Mid-level       Full-time     On-site      2024
## 6      BI Developer        Mid-level       Full-time     On-site      2024
## 7  Research Analyst      Entry-level       Full-time     On-site      2024
## 8  Research Analyst      Entry-level       Full-time     On-site      2024
## 9     Data Engineer  Executive-level       Full-time      Remote      2024
## 10    Data Engineer  Executive-level       Full-time      Remote      2024
##    employee_residence salary salary_currency salary_in_usd company_location
## 1       United States 148100             USD        148100    United States
## 2       United States  98700             USD         98700    United States
## 3       United States 140032             USD        140032    United States
## 4       United States 100022             USD        100022    United States
## 5       United States 120000             USD        120000    United States
## 6       United States  62100             USD         62100    United States
## 7       United States 250000             USD        250000    United States
## 8       United States 150000             USD        150000    United States
## 9       United States 219650             USD        219650    United States
## 10      United States 136000             USD        136000    United States
##    company_size
## 1        Medium
## 2        Medium
## 3        Medium
## 4        Medium
## 5        Medium
## 6        Medium
## 7        Medium
## 8        Medium
## 9        Medium
## 10       Medium
#Lấy 10 dòng cuối cùng 
tail(dss, 10) 
##                      job_title experience_level employment_type work_models
## 11078            Data Engineer        Mid-level       Full-time      Remote
## 11079              ML Engineer      Entry-level       Part-time      Remote
## 11080           Data Scientist        Mid-level       Full-time     On-site
## 11081           Data Scientist      Entry-level       Full-time      Hybrid
## 11082 Principal Data Scientist     Senior-level       Full-time      Remote
## 11083       Staff Data Analyst      Entry-level        Contract      Hybrid
## 11084       Staff Data Analyst  Executive-level       Full-time     On-site
## 11085 Machine Learning Manager     Senior-level       Full-time      Hybrid
## 11086            Data Engineer        Mid-level       Full-time      Hybrid
## 11087           Data Scientist     Senior-level       Full-time     On-site
##       work_year employee_residence salary salary_currency salary_in_usd
## 11078      2020            Germany  51999             EUR         59303
## 11079      2020            Germany  14000             EUR         15966
## 11080      2020            Germany  70000             EUR         79833
## 11081      2020            Germany  55000             EUR         62726
## 11082      2020            Germany 130000             EUR        148261
## 11083      2020             Canada  60000             CAD         44753
## 11084      2020            Nigeria  15000             USD         15000
## 11085      2020             Canada 157000             CAD        117104
## 11086      2020            Austria  65000             EUR         74130
## 11087      2020            Austria  80000             EUR         91237
##       company_location company_size
## 11078          Germany        Small
## 11079          Germany        Small
## 11080          Germany        Large
## 11081          Germany        Small
## 11082          Germany       Medium
## 11083           Canada        Large
## 11084           Canada       Medium
## 11085           Canada        Large
## 11086          Austria        Large
## 11087          Austria        Small

{r} #Xem cấu trúc của bộ dữ liệu str(ltn)}

3.3 Kiểm tra tính hoàn chỉnh của bộ dữ liệu

{r} #Xác định dữ liệu trống: Ô có dữ liệu là FALSE, ô không có dữ liệu là TRUE is.na(ltn)}

#Tổng số ô trống 
sum(is.na(dss))
## [1] 0
#Xác định vị trí của các ô trống 
which(is.na(dss))
## integer(0)

4. Rút trích dữ liệu

#Đặt lại têN cho các cột của dữ liệu 
names(dss) <- c('j','el','et','wm','wy','er','s','sc','su','c','cs') 
names(dss)
##  [1] "j"  "el" "et" "wm" "wy" "er" "s"  "sc" "su" "c"  "cs"
#Gán d1 là giá trị hàng 2 cột 2 
d1 <- dss[2,2] 
str(d1)
##  chr "Mid-level"
#Gán d2 là giá trị 7 hàng đầu tiên cột work_models 
d2 <- dss[1:7,4] 
str(d2)
##  chr [1:7] "Remote" "Remote" "Remote" "Remote" "On-site" "On-site" ...
#Gán D là giá trị toàn bột cột salary của dss
x <- dss$s
str(x)
##  num [1:11087] 148100 98700 140032 100022 120000 ...



#Gán v là giá trị toàn bộ cột salary và tất cả các hàng của dss
v <- dss[ ,7] 
str(v)
##  num [1:11087] 148100 98700 140032 100022 120000 ...
#Gán n là giá trị toàn bộ hàng 6 và tất cả các cột của dss 
n <- dss[6, ] 
str(n)
## 'data.frame':    1 obs. of  11 variables:
##  $ j : chr "BI Developer"
##  $ el: chr "Mid-level"
##  $ et: chr "Full-time"
##  $ wm: chr "On-site"
##  $ wy: num 2024
##  $ er: chr "United States"
##  $ s : num 62100
##  $ sc: chr "USD"
##  $ su: num 62100
##  $ c : chr "United States"
##  $ cs: chr "Medium"
#Gán dss1 là giá trị của cột salary và cột salary_usd và tất cả các hàng của dss 
dss1 <- dss[ ,c(7,9)] 
str(dss1)
## 'data.frame':    11087 obs. of  2 variables:
##  $ s : num  148100 98700 140032 100022 120000 ...
##  $ su: num  148100 98700 140032 100022 120000 ...
#Gán dss2 là giá trị từ hàng 2 đến hàng 9 và tất cả các cột của dss 
dss2 <- dss[2:9, ] 
str(dss2)
## 'data.frame':    8 obs. of  11 variables:
##  $ j : chr  "Data Engineer" "Data Scientist" "Data Scientist" "BI Developer" ...
##  $ el: chr  "Mid-level" "Senior-level" "Senior-level" "Mid-level" ...
##  $ et: chr  "Full-time" "Full-time" "Full-time" "Full-time" ...
##  $ wm: chr  "Remote" "Remote" "Remote" "On-site" ...
##  $ wy: num  2024 2024 2024 2024 2024 ...
##  $ er: chr  "United States" "United States" "United States" "United States" ...
##  $ s : num  98700 140032 100022 120000 62100 ...
##  $ sc: chr  "USD" "USD" "USD" "USD" ...
##  $ su: num  98700 140032 100022 120000 62100 ...
##  $ c : chr  "United States" "United States" "United States" "United States" ...
##  $ cs: chr  "Medium" "Medium" "Medium" "Medium" ...
#Gán dss3 là giá trị của các hàng 3,5,7,21 và tất cả các cột của dss 
dss3 <- dss[c(3,5,7,21), ] 
str(dss3)
## 'data.frame':    4 obs. of  11 variables:
##  $ j : chr  "Data Scientist" "BI Developer" "Research Analyst" "Data Engineer"
##  $ el: chr  "Senior-level" "Mid-level" "Entry-level" "Senior-level"
##  $ et: chr  "Full-time" "Full-time" "Full-time" "Full-time"
##  $ wm: chr  "Remote" "On-site" "On-site" "On-site"
##  $ wy: num  2024 2024 2024 2024
##  $ er: chr  "United States" "United States" "United States" "United States"
##  $ s : num  140032 120000 250000 204662
##  $ sc: chr  "USD" "USD" "USD" "USD"
##  $ su: num  140032 120000 250000 204662
##  $ c : chr  "United States" "United States" "United States" "United States"
##  $ cs: chr  "Medium" "Medium" "Medium" "Medium"
#Gán dss4 là gí trị của các hàng 2,3,6,18 và các cột 2,3 của dss 
dss4 <- dss[c(2,3,6,18),c(2,3)] 
str(dss4)
## 'data.frame':    4 obs. of  2 variables:
##  $ el: chr  "Mid-level" "Senior-level" "Mid-level" "Mid-level"
##  $ et: chr  "Full-time" "Full-time" "Full-time" "Full-time"
#Gán dss5 là giá trị các hàng salary có dữ liệu >= 100000 và tất cả các cột của dss 
dss5 <- dss[dss$s >= 100000, ] 
str(dss5)
## 'data.frame':    8681 obs. of  11 variables:
##  $ j : chr  "Data Engineer" "Data Scientist" "Data Scientist" "BI Developer" ...
##  $ el: chr  "Mid-level" "Senior-level" "Senior-level" "Mid-level" ...
##  $ et: chr  "Full-time" "Full-time" "Full-time" "Full-time" ...
##  $ wm: chr  "Remote" "Remote" "Remote" "On-site" ...
##  $ wy: num  2024 2024 2024 2024 2024 ...
##  $ er: chr  "United States" "United States" "United States" "United States" ...
##  $ s : num  148100 140032 100022 120000 250000 ...
##  $ sc: chr  "USD" "USD" "USD" "USD" ...
##  $ su: num  148100 140032 100022 120000 250000 ...
##  $ c : chr  "United States" "United States" "United States" "United States" ...
##  $ cs: chr  "Medium" "Medium" "Medium" "Medium" ...
#Gán dss6 là giá trị của các hàng salary >= 10000 và <= 100000 và tất cả các cột của dss 
dss6 <- dss[dss$s >= 10000 & dss$s <= 100000, ] 
str(dss6)
## 'data.frame':    2640 obs. of  11 variables:
##  $ j : chr  "Data Engineer" "BI Developer" "Business Intelligence Developer" "Business Intelligence Developer" ...
##  $ el: chr  "Mid-level" "Mid-level" "Mid-level" "Mid-level" ...
##  $ et: chr  "Full-time" "Full-time" "Full-time" "Full-time" ...
##  $ wm: chr  "Remote" "On-site" "On-site" "On-site" ...
##  $ wy: num  2024 2024 2024 2024 2024 ...
##  $ er: chr  "United States" "United States" "United States" "United States" ...
##  $ s : num  98700 62100 87800 76300 98700 93000 85000 75000 70000 85000 ...
##  $ sc: chr  "USD" "USD" "USD" "USD" ...
##  $ su: num  98700 62100 87800 76300 98700 93000 85000 75000 70000 85000 ...
##  $ c : chr  "United States" "United States" "United States" "United States" ...
##  $ cs: chr  "Medium" "Medium" "Medium" "Medium" ...
#Gán dss7 là giá trị của hàng salary là 79 hoặc 80 và tất cả các cột của dss
dss7 <- dss[dss$s == 79 | dss$s == 80, ] 
str(dss7)
## 'data.frame':    0 obs. of  11 variables:
##  $ j : chr 
##  $ el: chr 
##  $ et: chr 
##  $ wm: chr 
##  $ wy: num 
##  $ er: chr 
##  $ s : num 
##  $ sc: chr 
##  $ su: num 
##  $ c : chr 
##  $ cs: chr

5. Rút trích dữ liệu với filter và select

#Gán dss8 để trích dữ liệu salary >= 50000 và salary_in_usd <= 100000
dss8 <- filter(dss, dss$s>= 50000 & dss$su<= 100000)
str(dss8)
## 'data.frame':    2252 obs. of  11 variables:
##  $ j : chr  "Data Engineer" "BI Developer" "Business Intelligence Developer" "Business Intelligence Developer" ...
##  $ el: chr  "Mid-level" "Mid-level" "Mid-level" "Mid-level" ...
##  $ et: chr  "Full-time" "Full-time" "Full-time" "Full-time" ...
##  $ wm: chr  "Remote" "On-site" "On-site" "On-site" ...
##  $ wy: num  2024 2024 2024 2024 2024 ...
##  $ er: chr  "United States" "United States" "United States" "United States" ...
##  $ s : num  98700 62100 87800 76300 98700 93000 85000 75000 70000 85000 ...
##  $ sc: chr  "USD" "USD" "USD" "USD" ...
##  $ su: num  98700 62100 87800 76300 98700 93000 85000 75000 70000 85000 ...
##  $ c : chr  "United States" "United States" "United States" "United States" ...
##  $ cs: chr  "Medium" "Medium" "Medium" "Medium" ...
#Gán dss9 để lấy 3 cột salary, salary_currency, salary_in_usd
dss9 <- select(dss,s,sc,su)
str(dss9)
## 'data.frame':    11087 obs. of  3 variables:
##  $ s : num  148100 98700 140032 100022 120000 ...
##  $ sc: chr  "USD" "USD" "USD" "USD" ...
##  $ su: num  148100 98700 140032 100022 120000 ...
#Gán dss10 để trích dữ liệu salary>60000, salary_in_usd >40000 và chỉ lấy 5 cột job_title,  experience_level,   employment_type,    work_models,    work_year

dss10 <- filter(dss, s>60 & su>40) %>% select(j,el,et,wm,wy)
str(dss10)
## 'data.frame':    11087 obs. of  5 variables:
##  $ j : chr  "Data Engineer" "Data Engineer" "Data Scientist" "Data Scientist" ...
##  $ el: chr  "Mid-level" "Mid-level" "Senior-level" "Senior-level" ...
##  $ et: chr  "Full-time" "Full-time" "Full-time" "Full-time" ...
##  $ wm: chr  "Remote" "Remote" "Remote" "Remote" ...
##  $ wy: num  2024 2024 2024 2024 2024 ...

6. Tạo dữ liệu mới từ dữ liệu cũ

#Gán dss11 để thêm cột salary_in_vnd
dss11<- mutate(dss, vnd= s*23000)