1. Trang chủ
  2. » Công Nghệ Thông Tin

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

37 31 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 37
Dung lượng 1,63 MB

Nội dung

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...

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 liệu ứng dụng | Đại học Dược Hà Nội | 12/6 to 17/6/2019 © Tuan V Nguyen Biên tập liệu • Dùng hàm R – mã hóa, hốn chuyển, đổi tên biến, v.v • Dùng package tidyverse – select, filter, mutate, arrange, summarize Biên tập liệu với hàm R Dấu "$" • Rất quan trọng! • $ nối kết dataset biến số (dataframe variable) dat$var1 • có nghĩa biến "var1" thuộc dataset "dat" Dấu "$" bw = read.csv("~/Dropbox/_Conferences and Workshops/TDTU 2018/Datasets/birthwt.csv") head(bw, 3) id low age 85 19 86 33 87 20 lwt race smoke ptl ht ui ftv bwt 182 0 2523 155 0 0 2551 105 1 0 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 85 19 182 0 2523 82.55374 86 33 155 0 0 2551 70.30676 87 20 105 1 0 2557 47.62716 Mã hoá (coding) # Chúng ta muốn tạo biến "lowbw" mã hóa từ biến low Nếu low=1 lowbw="Yes"; low=0 lowbw="No" bw$lowbw[low=1] head(bw, 3) id low age lwt race smoke ptl ht ui ftv bwt weight lowbw smoker 85 19 182 0 2523 82.55374 Yes 86 33 155 0 0 2551 70.30676 Yes 87 20 105 1 0 2557 47.62716 Yes > 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 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 Thay đổi tên biến (rename) Chúng ta muốn đổi tên biến "low" thành "low.bw", "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 85 19 182 0 2523 86 33 155 0 0 2551 87 20 105 1 0 2557 names(bw)[names(bw)=="low"] temp # A tibble: x # Groups: race [?] race smoke count mean.age mean.lwt mean.bw 1 44 26.0 139 3429 1 52 22.8 126 2827 16 19.9 149 2854 10 24.1 143 2504 55 22.4 119 2816 12 22.5 124 2757 Hàm "count" đếm tần số bw %>% count(race) > bw %>% count(race) race n 1 96 2 26 3 67 bw %>% count(race, smoke) race smoke 1 2 3 n 44 52 16 10 55 12 Hàm "sample" dùng để chọn mẫu ngẫu nhiên d5 = sample_n(bw, 10) d5 # Chọn ngẫu nhiên 10 đối tượng từ bw id low age lwt race smoke ptl ht ui ftv bwt 57 144 21 110 0 3203 159 43 27 130 0 2187 124 220 22 129 0 0 4111 93 187 19 235 1 0 3629 48 135 19 132 0 0 3090 73 164 23 115 0 3331 17 102 15 98 0 0 2778 154 35 26 117 1 0 2084 30 116 17 113 0 0 2920 79 172 20 121 0 0 3444 Hàm "sample_frac()" dùng để chọn mẫu ngẫu nhiên d6 = sample_frac(bw, 0.05) # Chọn ngẫu nhiên 5% đối tượng từ bw d6 127 125 141 146 31 48 128 116 97 id low age lwt race smoke ptl ht ui ftv bwt 223 35 170 1 0 4174 221 25 130 0 0 4153 22 32 105 1 0 0 1818 27 20 150 1 0 1928 117 17 113 0 0 2920 135 19 132 0 0 3090 224 19 120 1 0 0 4238 212 28 134 0 0 3941 191 29 154 0 0 3651 Tóm tắt tidyverse • select() chọn cột/field liên quan • filter() chọn dòng quan tâm • mutate() thêm cột/field • arrange() thứ tự hóa dịng liệu • summarize()tóm tắt liệu theo dịng • sample() lấy mẫu ngẫu nhiên Đến phiên bạn Thực hành với R Dữ liệu thực hành "kidiq.txt" • File name: kidiq.txt • 434 trẻ với biến số sau đây: kid.score: điểm 'thông minh' trẻ mom.hs: mẹ tốt nghiệp trung học (0, 1) mom.iq: IQ mẹ mom.age: tuổi mẹ mom.work: (1=mẹ không làm năm đầu trẻ; 2=mẹ làm năm 3; 3=mẹ làm bán thời gian năm đầu; 4=mẹ làm toàn thời gian năm đầu) Đọc file vào máy tính Set working directory # đọc file kidiq.csv # iq = read.csv("kidiq.csv") iq = read.csv(file.choose()) iq head(iq) names(iq) dim(iq) "Cảm nhận" tóm lược liệu mean(id$kid.score) median(id$kid.score) hist(iq$kid.score) hist(iq$kid.score, col="blue") sd(id$kid.score) var(id$kid.score) summary(iq$kid.score) hist(iq$kid.score, col="blue", border="white") qqnorm(iq$kid.score) summary(iq$mom.score) qqline(iq$kid.score) summary(iq) Tabulation freq = table(iq$mom.work)) table(iq$mom.work) barplot(freq) table(iq$mom.work, iq$mom.hs) barplot(table(iq$mom.work)) # cần cài đặt DescTools install.packages("DescTools") library(DescTools) iq$mom.work = as.factor(iq$mom.work) Desc(iq$mom.work ~ iq$mom.hs) Biểu đồ phân bố theo nhóm ks1 = iq$kid.score[iq$mom.hs == 1] ks0 = iq$kid.score[iq$mom.hs == 0] h = hist(iq$kid.score, plot=TRUE) h1 = hist(ks1, breaks = h$breaks, plot=FALSE) h0 = hist(ks0, breaks = h$breaks, plot=FALSE) plot(h1, main="", col="red") plot(h0, add=T, col="grey") Biểu đồ hộp (box plot) boxplot(iq$kid.score ~ iq$mom.hs) boxplot(iq$kid.score ~ iq$mom.hs, names=c("No HS", "HS")) boxplot(iq$kid.score ~ iq$mom.hs, col=c("blue", "red"), names=c("No HS", "HS")) Biểu đồ tương quan plot(iq$mom.iq, iq$kid.score) plot(iq$kid.score ~ iq$mom.iq, pch=16) rownames(iq) = paste("kid", 1:nrow(iq), sep=" ") plot(iq$mom.iq, iq$kid.score, pch=16) identify(iq$mom.iq, iq$kid.score, labels=rownames(iq)) index = iq$mom.hs==1 plot(iq$mom.iq[index], iq$kid.score[index], pch=16) points(iq$mom.iq[!index], iq$kid.score[!index], col="red", pch=16) Tương quan đa chiều iq = read.csv("kidiq.csv") cor(iq) install.packages("psych") library(psych) pairs.panels(iq) ... by="id", all.x=T, all.y=T) Tóm lược biên tập liệu • Biên tập liệu bao gồm – mã hóa (ifelse) – xếp thứ tự – thay đổi tên biến số (names) – hợp liệu (merge) Biên tập liệu với "tidyverse" Package tidyverse.. .Biên tập liệu • Dùng hàm R – mã hóa, hốn chuyển, đổi tên biến, v.v • Dùng package tidyverse – select, filter, mutate, arrange, summarize Biên tập liệu với hàm R Dấu "$"... thêm cột/field • arrange() thứ tự hóa dịng liệu • summarize()tóm tắt liệu theo dịng • sample() lấy mẫu ngẫu nhiên Đến phiên bạn Thực hành với R Dữ liệu thực hành "kidiq.txt" • File name: kidiq.txt

Ngày đăng: 24/10/2020, 00:14

TỪ KHÓA LIÊN QUAN