Nga Hoang
2023-02-18
Tìm thông tin về một hàm :
Tìm thông tin về một từ hoặc cụm từ :
Tìm thông tin về một package :
Tóm tắt về cấu trúc của đối tượng.
VD như data iris có sẵn trong R:
## 'data.frame': 150 obs. of 5 variables:
## $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
## $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
## $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
## $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
## $ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
Tìm kiếm class của đối tượng:
## [1] "data.frame"
R là một ngôn ngữ lập trình mạnh mẽ và linh hoạt với nhiều chức
năng khác nhau, tuy nhiên, R không bao gồm tất cả các chức năng của mọi
lĩnh vực. Thay vào đó, các chức năng này được cung cấp thông qua các
package.
Khi tải xuống một package, bạn đang tải về tập hợp các hàm, dữ liệu, tài
liệu hướng dẫn và các tài nguyên khác cần thiết để sử dụng package đó.
Khi bạn muốn sử dụng một chức năng cụ thể, bạn cần chỉ định tên package
và hàm tương ứng.
Gọi package để sử dụng:
Sử dụng một hàm cụ thể thuộc một package:
Ví dụ, giả sử bạn có một data frame tên là my_data với
các cột là name, age,
gender và salary.
my_data <- data.frame( name = c('A','B','C'), age = c(22,20,30), gender =c('male','male','female'), salary = c(700,1000,500))| name | age | gender | salary |
|---|---|---|---|
| A | 22 | male | 700 |
| B | 20 | male | 1000 |
| C | 30 | female | 500 |
Bạn muốn chọn cột name và salary và lưu kết quả vào một biến mới có tên là my_selected_data. Bạn có thể sử dụng hàm select() như sau:
| name | salary |
|---|---|
| A | 700 |
| B | 1000 |
| C | 500 |
## [1] 0.000000 1.098612 1.609438 1.945910 2.037317 2.001480 3.085344
## [1] 52.945
## [1] 2.718282e+00 2.008554e+01 1.484132e+02 1.096633e+03 2.143081e+03
## [6] 1.635984e+03 3.163674e+09
## [1] 7.563571
## [1] 21.875
## [1] 7
## [1] 1
## 0% 25% 50% 75% 100%
## 1.000 4.000 7.000 7.535 21.875
## [1] 1.00 3.00 5.00 7.00 7.67 7.40 21.88
## [1] 45.94187
## [1] 0.8433928
## [1] 6.778043
## -- Attaching packages --------------------------------------- tidyverse 1.3.2 --
## v ggplot2 3.4.1 v purrr 0.3.5
## v tibble 3.1.8 v dplyr 1.0.10
## v tidyr 1.2.1 v stringr 1.4.1
## v readr 2.1.3 v forcats 0.5.2
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
tidyverse là một tập hợp các gói R được thiết kế để làm
cho quá trình xử lý dữ liệu dễ dàng hơn, nhất quán hơn và trực quan
hơn.
Gói tidyverse bao gồm các gói sau:
filter()filter() cho phép bạn tập hợp con các quan sát dựa trên
giá trị của chúng. Đối số đầu tiên là tên của khung dữ liệu. Các đối số
thứ hai và tiếp theo là các biểu thức lọc khung dữ liệu.
Ví dụ: chúng tôi có thể chọn tất cả các chuyến bay vào ngày 1 tháng 1 với:
## # A tibble: 842 x 19
## year month day dep_time sched_de~1 dep_d~2 arr_t~3 sched~4 arr_d~5 carrier
## <int> <int> <int> <int> <int> <dbl> <int> <int> <dbl> <chr>
## 1 2013 1 1 517 515 2 830 819 11 UA
## 2 2013 1 1 533 529 4 850 830 20 UA
## 3 2013 1 1 542 540 2 923 850 33 AA
## 4 2013 1 1 544 545 -1 1004 1022 -18 B6
## 5 2013 1 1 554 600 -6 812 837 -25 DL
## 6 2013 1 1 554 558 -4 740 728 12 UA
## 7 2013 1 1 555 600 -5 913 854 19 B6
## 8 2013 1 1 557 600 -3 709 723 -14 EV
## 9 2013 1 1 557 600 -3 838 846 -8 B6
## 10 2013 1 1 558 600 -2 753 745 8 AA
## # ... with 832 more rows, 9 more variables: flight <int>, tailnum <chr>,
## # origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>, hour <dbl>,
## # minute <dbl>, time_hour <dttm>, and abbreviated variable names
## # 1: sched_dep_time, 2: dep_delay, 3: arr_time, 4: sched_arr_time,
## # 5: arr_delay
Khi chạy dòng mã đó, dplyr sẽ thực hiện thao tác lọc và trả về một
khung dữ liệu mới. Các hàm dplyr không bao giờ sửa đổi đầu vào của
chúng, vì vậy nếu bạn muốn lưu kết quả, bạn sẽ cần sử dụng toán tử gán
<-
Để sử dụng lọc hiệu quả phải biết cách chọn các quan sát mà bạn muốn
bằng cách sử dụng các toán tử so sánh. R cung cấp bộ tiêu chuẩn:
>, >=, <,
<=, !=(không bằng) và
==(bằng).
& là “và”
| là “hoặc”
! là “không”
“Biểu đồ đơn giản đã mang lại nhiều thông tin hơn cho tâm trí của nhà phân tích dữ liệu hơn bất kỳ thiết bị nào khác.” — John Tukey
Dữ liệu tiết kiệm nhiên liệu từ 1999 đến 2008 cho 38 kiểu xe
phổ biến
Data frame có 234 hàng và 11 biến:
manufacturer: tên nhà sản xuất
model: tên mẫu
displ: dung tích động cơ, tính bằng lít
year: năm sản xuất
cyl: số xi lanh
trans: loại truyền
drv: loại truyền động, trong đó f = dẫn động bánh trước, r = dẫn động bánh sau
cty: dặm thành phố trên mỗi gallon
hwy: dặm đường cao tốc trên mỗi gallon
fl: Loại nhiên liệu
class: loại xe hơi
Đồ thị cho thấy mối quan hệ tỷ lệ nghịch giữa kích thước động cơ (
displ) và hiệu suất nhiên liệu ( hwy). Nói cách khác, những chiếc xe có
động cơ lớn sẽ sử dụng nhiều nhiên liệu hơn.
Với ggplot2, bạn bắt đầu vẽ đồ thị bằng hàm ggplot().
ggplot()tạo một hệ tọa độ mà bạn có thể thêm các lớp vào.
Đối số đầu tiên của ggplot() là tập dữ liệu sẽ sử dụng
trong biểu đồ.
Bạn hoàn thành biểu đồ của mình bằng cách thêm một hoặc nhiều lớp vào
ggplot(). Hàm geom_point() thêm một lớp điểm
vào biểu đồ của bạn, tạo ra một biểu đồ phân tán.
ggplot2 đi kèm với nhiều hàm geom, mỗi
hàm thêm một loại lớp khác nhau vào biểu đồ.
“Giá trị lớn nhất của một bức tranh là khi nó buộc chúng ta phải chú ý đến những gì chúng ta không bao giờ muốn thấy.” — John Tukey
ggplot(data=mpg, mapping=aes(x=displ, y=hwy)) +
geom_point() +
geom_point(data=filter(mpg, displ > 5 & hwy > 20), colour="red", size=2.2)Trong biểu đồ bên trên, một nhóm điểm (được tô màu đỏ) dường như nằm ngoài xu hướng tuyến tính. Những chiếc xe này có số dặm cao hơn mong đợi. Làm thế nào có thể giải thích những chiếc xe này?
Ví dụ có thể ánh xạ màu của các điểm tới biến class để hiển thị loại của từng ô tô.
Màu sắc làm lộ ra những điểm bất thường là loại xe 2seater.
Trong ví dụ trên đã ánh xạ class tới thẩm mỹ màu sắc,
nhưng ta có thể ánh xạ class tới thẩm mỹ kích thước
theo cách tương tự. Trong trường hợp này, kích thước chính xác của mỗi
điểm sẽ tiết lộ liên kết lớp của nó.
Hoặc ta có thể đã ánh xạ class tới thẩm mỹ
alpha , kiểm soát độ trong suốt của các điểm hoặc thẩm mỹ
shape, kiểm soát hình dạng của các điểm.
Một cách khác, đặc biệt hữu ích cho các biến phân loại, là chia biểu đồ thành các biểu đồ con mà mỗi biểu đồ hiển thị một tập hợp con của dữ liệu.
Hai hình này giống nhau như thế nào?
Cả hai biểu đồ đều chứa cùng một biến x, cùng một biến y và cả hai đều mô tả cùng một dữ liệu. Mỗi biểu đồ sử dụng một đối tượng trực quan khác nhau để thể hiện dữ liệu.
Mọi hàm geom trong ggplot2 đều có một
mapping đối số. Tuy nhiên, không phải thẩm mỹ nào cũng phù
hợp với mọi geom. Bạn có thể đặt kiểu đường của một
đường.
Ở đây geom_smooth() chia ô tô thành ba dòng dựa trên giá
trị drv(mô tả hệ thống truyền động của ô tô). Một dòng
mô tả tất cả các điểm có giá trị 4, một dòng mô tả tất cả các
điểm có giá trị f và một dòng mô tả tất cả các điểm có giá trị
r.
Để hiển thị nhiều geom trong cùng một biểu đồ, có thể thêm nhiều hàm
geom vào ggplot():
ggplot(data = mpg) +
geom_point(mapping = aes(x = displ, y = hwy, color = drv)) +
geom_smooth(mapping = aes(x = displ, y = hwy, linetype = drv))
Tuy nhiên, điều này cho thấy một số trùng lặp, nếu muốn thay đổi trục y
để hiển thị cty thay vì hwy cần thay
đổi biến ở hai nơi và có thể quên cập nhật một biến.
Có thể tránh kiểu lặp lại này bằng cách chuyển bộ ánh xạ tới
ggplot(). ggplot2 sẽ coi những ánh xạ này là
ánh xạ toàn cầu áp dụng cho mỗi geom trong biểu đồ.
ggplot(data = mpg, mapping = aes(x = displ, y = hwy)) +
geom_point(mapping = aes(color = class)) +
geom_smooth()Tập dữ liệu diamonds chứa thông tin về ~54.000 viên kim cương, bao gồm price, carat, color và clarity của từng viên kim cương.
Biểu đồ sau hiển thị tổng số viên kim cương trong tập dữ liệu diamonds, được nhóm theo cut. Biểu đồ cho thấy rằng có nhiều viên kim cương có vết cắt chất lượng cao hơn so với những viên kim cương có chất lượng thấp.
Điều gì sẽ xảy ra nếu điền một biến khác vào ánh xạ thẩm mỹ , chẳng hạn như clarity. Các thanh được tự động xếp chồng lên nhau. Mỗi hình chữ nhật màu đại diện cho sự kết hợp của cut và clarity.
position = "dodge" : đặt các đối tượng chồng chéo trực
tiếp cạnh nhau. Điều này làm cho việc so sánh các giá trị riêng lẻ trở
nên dễ dàng hơn.
## Hệ tọa độ
coord_flip() chuyển đổi các trục x và y. Điều này rất
hữu ích nếu muốn các ô vuông nằm ngang. Nó cũng hữu ích cho các labels
dài: thật khó để làm cho chúng khớp với nhau mà không chồng lên nhau
trên trục x.
coord_quickmap() đặt tỷ lệ khung hình chính xác cho bản
đồ. Điều này rất quan trọng nếu vẽ biểu đồ dữ liệu không gian bằng
ggplot2
nz <- map_data("nz")
ggplot(nz, aes(long, lat, group = group)) +
geom_polygon(fill = "white", colour = "black")ggplot(nz, aes(long, lat, group = group)) +
geom_polygon(fill = "white", colour = "black") +
coord_quickmap()coord_polar() sử dụng tọa độ cực. Tọa độ cực tiết lộ mối
liên hệ giữa biểu đồ thanh và biểu đồ Coxcomb.
bar <- ggplot(data = diamonds) +
geom_bar(
mapping = aes(x = cut, fill = cut),
show.legend = FALSE,
width = 1
) +
theme(aspect.ratio = 1) +
labs(x = NULL, y = NULL)
bar + coord_flip()