Table of contents

Về cuốn sách này
Nhập môn về RQuản lý dữ liệu
Phân tích dữ liệu
Trực quan lại hóa dữ liệu
Báo cáo và dashboards
Tổng hợp
*

Trong R, factors là một trong những kiểu dữ liệu chất nhận được sắp xếp những danh mục với cùng 1 tập hợp những giá trị hoàn toàn có thể chấp nhận.

Bạn đang xem: R&b sư vạn hạnh

Thông thường, bạn sẽ chuyển đổi một cột từ bỏ dạng ký tự hoặc dạng số thành dạng factor khi bạn muốn sắp xếp một sản phẩm công nghệ tự quan trọng đặc biệt cho các giá trị (“levels”) để bọn chúng không hiển thị mang định theo sản phẩm tự bảng chữ cái trong số biểu đồ với bảng. Một giải pháp sử dụng thịnh hành khác của factor là chuẩn hóa những chú phù hợp của biểu vật để bọn chúng không đổi khác nếu một cực hiếm tạm thời không tồn tại trong dữ liệu.

Chương này giới thiệu cách sử dụng những hàm từ bỏ package forcats (tên viết tắt của “For categorical variables”) và một trong những hàm base R. Công ty chúng tôi cũng đề cập tới sự việc sử dụng lubridateaweek cho các trường vừa lòng factor đặc trưng liên quan cho tuần dịch tễ học.

Bạn rất có thể tìm thấy danh sách khá đầy đủ các hàm của package forcats trực đường tại đường link này. Sau đây, công ty chúng tôi sẽ chỉ trình bày một trong những hàm thịnh hành nhất.


Gọi packages

Đoạn code dưới đây hiển thị bí quyết gọi các package cần thiết cho bài toán phân tích. Trong sách này, cửa hàng chúng tôi nhấn mạnh tới việc sử dụng hàm p_load() tự package pacman, giúp thiết đặt package nếu nó chưa được tải gọi nó ra cho phiên làm cho việc. Bạn có thể gọi các package đã được cài đặt bằng hàm library() tự base R. Xem chương R cơ bản để biết thêm tin tức về những package vào R.


pacman::p_load( rio, # import/export here, # filepaths lubridate, # working with dates forcats, # factors aweek, # create epiweeks with automatic factor levels janitor, # tables tidyverse # data mgmt & viz )

Nhập dữ liệu

Chúng ta vẫn nhập bộ tài liệu về những trường hợp xuất phát điểm từ 1 vụ dịch Ebola tế bào phỏng. Để tiện ý muốn theo dõi, bấm để thiết lập bộ dữ liệu linelist “đã được làm sạch” (dưới dạng tệp .rds). Nhập tài liệu bằng hàm import() từ bỏ package rio (hàm rất có thể áp dụng với tương đối nhiều loại tài liệu như .xlsx, .rds, .csv - coi chương Nhập xuất dữ liệu để biết thêm chi tiết).


Thêm biến danh mục mới

Trong chương này, công ty chúng tôi sẽ minh họa một trường hòa hợp thường gặp, kia là tạo thành một biến hạng mục mới.

Lưu ý rằng khi bạn đổi khác một cột dạng số thành dạng factor, bạn sẽ không thể triển khai các giám sát thống kê đối với dữ liệu dạng số trên cột đó nữa.


Tạo biến

Chúng ta sẽ sử dụng một biến tất cả sẵn, thương hiệu là days_onset_hosp (số ngày, tính từ khi bắt đầu có triệu chứng cho đến khi nhập viện) và tạo một đổi thay mới mang tên delay_cat bằng phương pháp phân loại các giá trị trong những hàng của biến có sẵn đó thành một vài nhóm không giống nhau. Bọn họ sẽ thực hiện việc này bằng hàm case_when() vào package dplyr, hàm này để giúp đỡ áp dụng tuần tự các tiêu chuẩn logic (phía mặt phải) cho từng giá trị của biễn bao gồm sẵn cùng trả về giá bán trị bên trái tương ứng ở biến mới delay_cat. Đọc thêm về case_when() trên chương làm cho sạch số liệu và những hàm quan liêu trọng.


linelist linelist %>% mutate(delay_cat = case_when( # criteria # new value if TRUE days_onset_hosp 2 ~ ", days_onset_hosp >= 2 và days_onset_hosp 5 ~ "2-5 days", days_onset_hosp >= 5 ~ ">5 days", is.na(days_onset_hosp) ~ NA_character_, TRUE ~ "Check me"))
Thứ tự mang định của những giá trị
Khi thực hiện hàm case_when(), biến new delay_cat tạo ra sẽ là 1 trong những biến hạng mục với kiểu tài liệu là ký tự - chưa phải là một factor. Bởi vì đó, vào bảng tần suất dưới đây, chúng ta thấy rằng các giá trị mở ra theo thứ tự khoác định của bảng chữ cái, điều này không có nhiều ý nghĩa sâu sắc trực quan:


## ## 5 days 2-5 days ## 2990 602 2040 256Tương từ bỏ như vậy, nếu bọn họ tạo biểu vật dụng cột, những giá trị cũng xuất hiện theo trang bị tự này bên trên trục x (xem chương ggplot cơ bạn dạng để đọc thêm về package ggplot2 - package góp trực quan hóa dữ liệu phổ biến nhất trong R).


*

11.2 biến hóa sang factor

Để biến đổi một biến dạng ký tự hoặc dạng số sang dạng factor, chúng ta có thể sử dụng bất kỳ hàm làm sao trong package forcats (nhiều hàm được nêu cụ thể tại mục dưới đây). Các biến sẽ chuyển đổi sang dạng factor và tiếp đến cũng tiến hành hoặc bố trí theo một lắp thêm tự độc nhất định của những levels - ví dụ: hàm fct_relevel() được cho phép bạn hướng dẫn và chỉ định thứ tự levels theo cách thủ công. Hàm as_factor() chỉ dễ dàng là đổi khác biến sang dạng factor mà không tồn tại thêm ngẫu nhiên chức năng làm sao khác.

Hàm factor() trong base R thay đổi một trở thành factor và cho phép bạn tự bố trí thứ tự của các nhóm giá trị, dưới dạng một vectơ ký kết tự của đối số levels =.

Dưới đây, shop chúng tôi sử dụng hàm mutate() cùng hàm fct_relevel() để đưa đối biến tất cả sẵn delay_cat trường đoản cú dạng ký kết tự sang dạng factor. Biến delay_cat đang được tạo thành ở phần chuẩn bị bên trên.


Các “giá trị” tốt nhất trong biến hóa số được gọi là những “thứ bậc” của vươn lên là factor. các thứ bậc này được bố trí theo một bơ vơ tự tuyệt nhất định và có thể được in ra bởi hàm levels() tự base R, hoặc chúng ta cũng có thể xem nó bằng một bảng đếm thông qua hàm table()từ base R, hoặc hàm tabyl() từ bỏ package janitor. đơn nhất tự này sẽ được hiển thị theo máy tự của bảng chữ cái. Chú ý rằng NA ko được xem là một sản phẩm bậc vào factor.


## <1> "5 days" "2-5 days"Hàm fct_relevel() tất cả thêm tác dụng cho phép chúng ta cũng có thể tự thu xếp trật tự của những thứ bậc trong factor. Đơn giản, bạn chỉ cần viết các thứ bậc theo thứ tự các bạn muốn, để bọn chúng trong vệt ngoặc kép, được phân bóc tách bằng lốt phẩy, như được hiển thị mặt dưới. Lưu ý rằng chính tả buộc phải khớp đúng chuẩn với tên những thứ bậc. Nếu bạn muốn tạo các thứ bậc không tồn trên trong dữ liệu, hãy áp dụng hàm fct_expand() nhé.


*

Thêm trang bị bậc

Nếu bạn phải thêm sản phẩm công nghệ bậc trong factor, chúng ta cũng có thể sử dụng hàm fct_expand(). Bạn chỉ việc viết tên biến hóa và theo sau là tên những thứ bậc bắt đầu (phân bóc bằng vệt phẩy). Bằng phương pháp lập bảng, bạn cũng có thể thấy các thứ bậc mới mở ra và chưa nhận cực hiếm nào. Bạn có thể sử dụng hàm table() vào base R, hoặc hàm tabyl() trong package janitor:


linelist %>% mutate(delay_cat = fct_expand(delay_cat, "Not admitted to hospital", "Transfer to lớn other jurisdiction")) %>% tabyl(delay_cat) # print table

Xóa sản phẩm công nghệ bậc

Nếu bạn sử dụng hàm fct_drop(), những thứ bậc “không được sử dụng” và không tồn tại quan giáp nào sẽ bị loại bỏ khỏi factors. Máy bậc mà họ đã thêm sinh hoạt trên (“Not admitted lớn a hospital”) tất cả tồn tại tuy thế thực tế không có dòng nào chứa giá trị này. Vì chưng vậy, chúng sẽ bị nockout bỏ khỏi phát triển thành factor của chúng ta bằng cách sử dụng hàm fct_drop() như sau:


11.4 thay đổi trật tự của những thứ bậc

Package forcats cung cấp các hàm bổ ích để dễ dàng biến hóa trật tự của những thứ bậc trong một đổi thay kiểu factor (sau khi một biến số được định nghĩa là một trong những factor):

Các hàm vào package này hoàn toàn có thể được áp dụng cho biến dạng factor trong nhị trường thích hợp dưới đây:

Đối cùng với cột trong một data frame, thông thường, việc chuyển đổi sẽ được không thay đổi cho các lần sử dụng tài liệu tiếp theoTrong một biểu đồ, sự thay đổi trật tự chỉ được vận dụng cho biểu vật đó

Thay đổi thủ công

Hàm này được thực hiện để biến hóa trật tự của những thứ bậc trong một biến dạng factor theo phong cách thủ công. Ví như hàm này được áp dụng trên một biến dị khác, chưa phải factor, hàm sẽ giúp đỡ chuyển trở thành đó thanh lịch dạng factor trước.

Trong lốt ngoặc đối kháng trước tiên điền tên của đổi thay factor, kế tiếp điền:

Chỉ một quý hiếm thứ bậc cùng với vị trí tương ứng mong muốn, sử dụng đối số after =

Dưới đó là một ví dụ như về chuyển đổi delay_cat thành dạng factor (mặc dù trở nên này đang ở dạng Factor rồi) và bố trí lại những thứ bậc theo thiết bị tự mong muốn muốn.


# re-define cấp độ orderlinelist linelist %>% mutate(delay_cat = fct_relevel(delay_cat, c(", "2-5 days", ">5 days")))
Nếu các bạn chỉ mong chỉ xác định trí cho một thứ bậc, bạn có thể dùng hàm fct_relevel() và áp dụng đối số after = để hướng đẫn một quý hiếm thứ bậc với vị trí tương xứng mong muốn. Ví dụ: lệnh sau đây chuyển sản phẩm công nghệ bậc “# re-define level orderlinelist %>% mutate(delay_cat = fct_relevel(delay_cat, ", after = 1)) %>% tabyl(delay_cat)

# Alpha-numeric default order - no adjustment within ggplotggplot(data = linelist)+ geom_bar(mapping = aes(x = delay_cat))# Factor cấp độ order adjusted within ggplotggplot(data = linelist)+ geom_bar(mapping = aes(x = fct_relevel(delay_cat, c(", "2-5 days", ">5 days"))))

*
*

Lưu ý rằng, sinh hoạt biểu đồ thiết bị hai, tiêu đề mặc định của trục x được hiện khá phức tạp - chúng ta cũng có thể sử tiêu đề này bằng đối số labs() vào ggplot2.




# ordered by frequencyggplot(data = linelist, aes(x = fct_infreq(delay_cat)))+ geom_bar()+ labs(x = "Delay onset lớn admission (days)", title = "Ordered by frequency")# reversed frequencyggplot(data = linelist, aes(x = fct_rev(fct_infreq(delay_cat))))+ geom_bar()+ labs(x = "Delay onset to lớn admission (days)", title = "Reverse of order by frequency")

*
*



# boxplots ordered by original factor levelsggplot(data = linelist)+ geom_boxplot( aes(x = delay_cat, y = ct_blood, fill = delay_cat))+ labs(x = "Delay onset to admission (days)", title = "Ordered by original alpha-numeric levels")+ theme_classic()+ theme(legend.position = "none")# boxplots ordered by median CT valueggplot(data = linelist)+ geom_boxplot( aes(x = fct_reorder(delay_cat, ct_blood, "median"), y = ct_blood, fill = delay_cat))+ labs(x = "Delay onset to lớn admission (days)", title = "Ordered by median CT value in group")+ theme_classic()+ theme(legend.position = "none")

*
*

Lưu ý trong ví dụ bên trên không có bước như thế nào được yêu ước cần thực hiện trước khi điện thoại tư vấn hàm ggplot() - câu hỏi nhóm và đo lường đều được thực hiện phía bên trong hàm ggplot.




*

linelist %>% mutate(delay_cat = fct_explicit_na(delay_cat, na_level = "Missing delay")) %>% tabyl(delay_cat)
## delay_cat n percent## 2-5 days 2040 0.34646739## 5 days 602 0.10224185## Missing delay 256 0.04347826

levels(linelist$delay_cat)

linelist %>% mutate(delay_cat = fct_recode( delay_cat, "Less than 2 days" = ", "2 to 5 days" = "2-5 days", "More than 5 days" = ">5 days")) %>% tabyl(delay_cat)

linelist %>% mutate(delay_cat = fct_recode( delay_cat, "Less than 5 days" = ", "Less than 5 days" = "2-5 days", "More than 5 days" = ">5 days")) %>% tabyl(delay_cat)

linelist %>% mutate(hospital = fct_other( # adjust levels hospital, keep = c("Port Hospital", "Central Hospital"), # keep these separate other_level = "Other Hospital")) %>% # All others as "Other Hospital" tabyl(hospital) # print table
## hospital n percent## Central Hospital 454 0.07710598## Port Hospital 1762 0.29925272## Other Hospital 3672 0.62364130

linelist %>% mutate(hospital = fct_lump( # adjust levels hospital, n = 2, # keep top 2 levels other_level = "Other Hospital")) %>% # all others as "Other Hospital" tabyl(hospital) # print table
## hospital n percent## Missing 1469 0.2494905## Port Hospital 1762 0.2992527## Other Hospital 2657 0.4512568

Trong biểu đồ

Trong hàm vẽ biểu vật ggplot (), chỉ việc thêm đối số drop = FALSE trong hàm liên quan scale_xxxx(). Tất cả các thiết bị bậc trong phát triển thành factor sẽ tiến hành hiển thị, bất kể chúng bao gồm trong dữ liệu hay không. Nếu các thứ bậc trong thay đổi factor của công ty được hiển thị bằng phương pháp sử dụng fill =, thì trong scale_fill_discrete (), bạn cần thêm drop = FALSE, như được trình bày bên dưới. Nếu những thứ bậc trong vươn lên là factor của người tiêu dùng được hiển thị với x = (đến trục x) màu sắc = hoặc kích thước =, các bạn sẽ cung cấp cho chúng cho tới scale_color_discrete() hoặc scale_size_discrete().

Ví dụ này là 1 trong biểu đồ cột ông xã của team tuổi, theo bệnh dịch viện. Bài toán thêm scale_fill_discrete (drop = FALSE) đảm bảo an toàn rằng tất cả các đội tuổi đều xuất hiện thêm trong chú giải, ngay cả khi không tồn tại trong dữ liệu.


ggplot(data = linelist)+ geom_bar(mapping = aes(x = hospital, fill = age_cat)) + scale_fill_discrete(drop = FALSE)+ # show all age groups in the legend, even those not present labs( title = "All age groups will appear in legend, even if not present in data")

*


Tuần dịch tễ vào biểu đồ

Nếu mục tiêu của công ty là tạo các tuần dịch tễ học để hiển thị trong một biểu đồ, chúng ta cũng có thể thực hiện vấn đề này dễ dàng với hàm floor_date() vào package lubridate, như được giải thích trong chương đội dữ liệu. Các giá trị trả về đang thuộc một số loại Ngày tháng với định dạng YYYY-MM-DD. Nếu khách hàng sử dụng cột này vào một biểu đồ, tháng ngày sẽ tự nhiên và thoải mái được chuẩn bị xếp đúng chuẩn và chúng ta không phải phải lo ngại về thiết bị bậc hoặc đổi khác sang dạng factor. Xem biểu vật dụng histogram vào hàm ggplot() về các ngày khởi phát bên dưới.


linelist %>% mutate(epiweek_date = floor_date(date_onset, "week")) %>% # create week column ggplot()+ # begin ggplot geom_histogram(mapping = aes(x = epiweek_date))+ # histogram of date of onset scale_x_date(date_labels = "%Y-W%W") # adjust disply of dates lớn be YYYY-WWw

linelist linelist %>% mutate(epiweek_date = floor_date(date_onset, "week"), # create epiweeks (YYYY-MM-DD) epiweek_formatted = format(epiweek_date, "%Y-W%W"), # Convert to lớn display (YYYY-WWw) epiweek_formatted = factor(epiweek_formatted)) # Convert to factor# Display levelslevels(linelist$epiweek_formatted)
## <1> "2014-W13" "2014-W14" "2014-W15" "2014-W16" "2014-W17" "2014-W18" "2014-W19" "2014-W20" "2014-W21" "2014-W22" "2014-W23" "2014-W24" "2014-W25"## <14> "2014-W26" "2014-W27" "2014-W28" "2014-W29" "2014-W30" "2014-W31" "2014-W32" "2014-W33" "2014-W34" "2014-W35" "2014-W36" "2014-W37" "2014-W38"## <27> "2014-W39" "2014-W40" "2014-W41" "2014-W42" "2014-W43" "2014-W44" "2014-W45" "2014-W46" "2014-W47" "2014-W48" "2014-W49" "2014-W50" "2014-W51"## <40> "2015-W00" "2015-W01" "2015-W02" "2015-W03" "2015-W04" "2015-W05" "2015-W06" "2015-W07" "2015-W08" "2015-W09" "2015-W10" "2015-W11" "2015-W12"## <53> "2015-W13" "2015-W14" "2015-W15" "2015-W16"Nguy hiểm: nếu như bạn đặt những tuần trước những năm (“Www-YYYY”) (“%W-%Y”), đồ vật tự những thứ bậc sẽ bố trí mặc định theo bảng chữ cái và điều đó là không đúng mực (ví dụ: 01-2015 sẽ là trước 35-2014). Bạn có thể cần phải kiểm soát và điều chỉnh thứ tự theo phong cách thủ công, đây vẫn là một quy trình dài trở ngại .

Để hiển thị nhanh theo mặc định, thực hiện hàm date2week() vào package aweek. Chúng ta có thể đặt ngày theo hàm week_start =, và nếu như khách hàng đặt đối số factor = TRUE thì cột đầu ra là 1 trong những factor có thứ tự. Factor sẽ bao gồm các vật dụng bậc cho tất cả những tuần hoàn toàn có thể có vào khoảng thời hạn - ngay cả khi không có trường vừa lòng nào xuất hiện trong tuần đó.

df linelist %>% mutate(epiweek = date2week(date_onset, week_start = "Monday", factor = TRUE))levels(df$epiweek)
Xem chương thao tác với ngày tháng để biết thêm tin tức về package aweek. Nó cũng tin báo về hàm hòn đảo ngược week2date().

Trong nội dung bài viết này

You can run R scripts directly in power nguồn BI Desktop and import the resulting datasets into a power nguồn BI Desktop data model.

Install R

To run R scripts in power nguồn BI Desktop, you need to install R on your local machine. You can download and install R for không lấy phí from many locations, including the designglobal.edu.vn R Application Network và the CRAN Repository. The current release supports Unicode characters và spaces (empty characters) in the installation path.

Run R scripts

Using just a few steps in power nguồn BI Desktop, you can run R scripts & create a data model. With the data model, you can create reports và share them on the power nguồn BI service. R scripting in power nguồn BI Desktop now supports number formats that contain decimals (.) and commas (,).

Prepare an R script

To run an R script in power nguồn BI Desktop, create the script in your local R development environment, and make sure it runs successfully.

To run the script in nguồn BI Desktop, make sure the script runs successfully in a new và unmodified workspace. This prerequisite means that all packages và dependencies must be explicitly loaded và run. You can use source() khổng lồ run dependent scripts.

When you prepare và run an R script in nguồn BI Desktop, there are a few limitations:

Because only data frames are imported, remember khổng lồ represent the data you want to import khổng lồ Power BI in a data frame.Columns typed as ComplexVector aren"t imported, & they"re replaced with error values in the created table.Values of N/A are translated lớn NULL values in nguồn BI Desktop.If an R script runs longer than 30 minutes, it times out.Interactive calls in the R script, such as waiting for user input, halt the script"s execution.When setting the working directory within the R script, you must define a full path khổng lồ the working directory, rather than a relative path.

Run your R script và import data

Now you can run your R script to import data into power BI Desktop:

In nguồn BI Desktop, select Get data, choose Other > R script, and then select Connect:

*

If R is installed on your local machine, just copy your script into the script window and select OK. The latest installed version is displayed as your R engine.

*

Select OK to run the R Script. When the script runs successfully, you can then choose the resulting data frames to showroom to the power BI model.

You can control which R installation to use to run your script. To specify your R installation settings, choose File > Options và settings > Options, then select R scripting. Under R script options, the Detected R home directories dropdown menu shows your current R installation choices. If the R installation you want isn"t listed, pick Other, và then browse to lớn or enter your preferred R installation thư mục in Set an R trang chủ directory.

*

Refresh

You can refresh an R script in nguồn BI Desktop. When you refresh an R script, power nguồn BI Desktop runs the R script again in the nguồn BI Desktop environment.

Xem thêm: Hà Nội Xưa Và Nay: Công Viên Lênin, Hà Nội Xưa Và Nay: Công Viên Thống Nhất

Next steps

Take a look at the following additional information about R in power BI.