intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Biên tập dữ liệu

Chia sẻ: Menh Menh | Ngày: | Loại File: PDF | Số trang:37

29
lượt xem
1
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài giảng trình bày các nội dung: dùng hàm cơ bản trong R để mã hóa, chuyển đổi, đổi tên biến; dùng package tidyverse; biên tập dữ liệu với hàm cơ bản trong R; hợp nhất dữ liệu...

Chủ đề:
Lưu

Nội dung Text: Bài giảng Biên tập dữ liệu

  1. Tuan V. Nguyen Garvan Institute of Medical Research Professor, UNSW School of Public Health and Community Medicine Professor of Predictive Medicine, University of Technology Sydney Adj. Professor of Epidemiology and Biostatistics, School of Medicine Sydney, University of Notre Dame Australia Phân tích dữ liệu và ứng dụng | Đại học Dược Hà Nội | 12/6 to 17/6/2019 © Tuan V. Nguyen
  2. Biên tập dữ liệu • Dùng hàm cơ bản trong R – mã hóa, hoán chuyển, đổi tên biến, v.v. • Dùng package tidyverse – select, filter, mutate, arrange, summarize
  3. Biên tập dữ liệu với hàm cơ bản trong R
  4. Dấu "$" • Rất quan trọng! • $ nối kết dataset và biến số (dataframe và variable) dat$var1 • có nghĩa là biến "var1" thuộc dataset "dat"
  5. Dấu "$" bw = read.csv("~/Dropbox/_Conferences and Workshops/TDTU 2018/Datasets/birthwt.csv") head(bw, 3) id low age lwt race smoke ptl ht ui ftv bwt 1 85 0 19 182 2 0 0 0 1 0 2523 2 86 0 33 155 3 0 0 0 0 3 2551 3 87 0 20 105 1 1 0 0 0 1 2557 > weight = lwt*0.453592 Error: object 'lwt' not found > bw$weight = bw$lwt*0.453592 > head(bw, 3) id low age lwt race smoke ptl ht ui ftv bwt weight 1 85 0 19 182 2 0 0 0 1 0 2523 82.55374 2 86 0 33 155 3 0 0 0 0 3 2551 70.30676 3 87 0 20 105 1 1 0 0 0 1 2557 47.62716
  6. Mã hoá (coding) # Chúng ta muốn tạo ra một biến mới "lowbw" mã hóa từ biến low. Nếu low=1 thì lowbw="Yes"; nếu low=0 thì lowbw="No" bw$lowbw[low=1]
  7. ifelse # Chúng ta muốn tạo ra một biến mới "smoker". Nếu smoke=1 thì smoker=Yes, tất cả các giá trị khác thì smoker=No bw$smoker = ifelse(bw$smoke==1, 1, 0)
  8. as.factor và as.numeric • Biến character: dùng cho phân nhóm • Biến numeric: dùng cho tính toán > head(bw, 3) id low age lwt race smoke ptl ht ui ftv bwt weight lowbw smoker 1 85 0 19 182 2 0 0 0 1 0 2523 82.55374 Yes 0 2 86 0 33 155 3 0 0 0 0 3 2551 70.30676 Yes 0 3 87 0 20 105 1 1 0 0 0 1 2557 47.62716 Yes 1 > bw$temp = as.factor(bw$race) > mean(bw$temp) [1] NA Warning message: In mean.default(bw$temp) : argument is not numeric or logical: returning NA > mean(bw$race) [1] 1.846561
  9. sort() > bw$bwt [1] 2523 2551 2557 2594 2600 2622 2637 2637 2663 2665 2722 2733 2751 2750 [15] 2769 2769 2778 2782 2807 2821 2835 2835 2836 2863 2877 2877 2906 2920 [29] 2920 2920 2920 2948 2948 2977 2977 2977 2977 2922 3005 3033 3042 3062 [43] 3062 3062 3062 3062 3080 3090 3090 3090 3100 3104 3132 3147 3175 3175 > sort(bw$bwt) [1] 709 1021 1135 1330 1474 1588 1588 1701 1729 1790 1818 1885 1893 1899 [15] 1928 1928 1928 1936 1970 2055 2055 2082 2084 2084 2100 2125 2126 2187 [29] 2187 2211 2225 2240 2240 2282 2296 2296 2301 2325 2353 2353 2367 2381 [43] 2381 2381 2410 2410 2410 2414 2424 2438 2442 2450 2466 2466 2466 2495 [57] 2495 2495 2495 2523 2551 2557 2594 2600 2622 2637 2637 2663 2665 2722
  10. Thay đổi tên biến (rename) Chúng ta muốn đổi tên biến "low" thành "low.bw", và "lwt" thành "mother.weight" > bw = read.csv("~/Dropbox/_Conferences and Workshops/TDTU 2018/Datasets/birthwt.csv") > head(bw, 3) id low age lwt race smoke ptl ht ui ftv bwt 1 85 0 19 182 2 0 0 0 1 0 2523 2 86 0 33 155 3 0 0 0 0 3 2551 3 87 0 20 105 1 1 0 0 0 1 2557 names(bw)[names(bw)=="low"]
  11. Hợp nhất dữ liệu: merge() id = c(1,2,3,4) id = c(1,2,3,4,5) sex=c("M","F","M","F") age=c(21,34,45,32,18) dat1=data.frame(id,sex) dat2=data.frame(id,age) dat = merge(dat1, dat2, by="id") dat = merge(dat1, dat2, by="id", all.x=T, all.y=T)
  12. Tóm lược biên tập dữ liệu • Biên tập dữ liệu bao gồm – mã hóa (ifelse) – sắp xếp thứ tự – thay đổi tên biến số (names) – hợp nhất dữ liệu (merge)
  13. Biên tập dữ liệu với "tidyverse"
  14. Package tidyverse • Hadley Wickham phát triển • Tổng hợp từ dplyr, ggplot2 • Dùng cho khoa học dữ liệu https://www.tidyverse.org • Rất tiện cho quản lí dữ liệu phức tạp • Chuẩn bị dữ liệu cho phân tích
  15. Những hàm chính trong tidyverse/dplyr 5 'động từ' chính: • select() chọn những cột/field liên quan • filter() chọn những dòng quan tâm • mutate() thêm cột/field • arrange() thứ tự hóa dòng dữ liệu • summarize()tóm tắt dữ liệu theo dòng %>% (pipe) operator
  16. "Văn phạm" chính của tidyverse select(dataframe, conditions) filter(dataframe, conditions) mutate(dataframe, conditions) arrange(dataframe, conditions) summarize(dataframe, conditions) hoặc dataframe %>% select(conditions)
  17. Dữ liệu thực hành: cân nặng trẻ sơ sinh bw = read.csv("birthwt.csv") head(bw) id low age lwt race smoke ptl ht ui ftv bwt 1 85 0 19 182 2 0 0 0 1 0 2523 2 86 0 33 155 3 0 0 0 0 3 2551 3 87 0 20 105 1 1 0 0 0 1 2557 4 88 0 21 108 1 1 0 0 1 2 2594 5 89 0 18 107 1 1 0 0 1 0 2600 6 91 0 21 124 3 0 0 0 0 0 2622
  18. select() – chọn những cột liên quan full data (bw) 189 dòng, 11 cột) id low age lwt race smoke ptl ht ui ftv bwt 1 85 0 19 182 2 0 0 0 1 0 2523 2 86 0 33 155 3 0 0 0 0 3 2551 3 87 0 20 105 1 1 0 0 0 1 2557 4 88 0 21 108 1 1 0 0 1 2 2594 5 89 0 18 107 1 1 0 0 1 0 2600 6 91 0 21 124 3 0 0 0 0 0 2622 temp = select(bw, c("low", "bwt", "lwt", "age")) temp = bw %>% select(c("low", "bwt", "lwt", "age")) head(temp) > head(temp) low bwt lwt age 1 0 2523 182 19 2 0 2551 155 33 3 0 2557 105 20 4 0 2594 108 21 5 0 2600 107 18 6 0 2622 124 21
  19. filter() – chọn những dòng liên quan temp = bw %>% filter(race==1, bwt
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2