R & D LÀ GÌ - PHONG CÁCH VIẾT MÃ R

-

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 liêu hóa dữ liệu
Báo cáo với dashboards
Tổng hòa hợp
*

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

Bạn đang xem: R & d là gì

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

Chương này ra mắt 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 đến sự việc sử dụng lubridate cùng aweek cho những trường đúng theo factor đặc biệt liên quan cho tuần dịch tễ học.

Bạn có thể tìm thấy danh sách rất đầy đủ các hàm của package forcats trực con đường tại đường links này. Sau đây, chúng tôi sẽ chỉ trình bày một số hàm thông dụng nhất.


Gọi packages

Đoạn code dưới đây hiển thị biện pháp gọi các package cần thiết cho việc phân tích. Trong sách này, công ty chúng tôi nhấn mạnh đến sự việc sử dụng hàm p_load() tự package pacman, giúp setup package nếu nó đang chưa được sở hữu điện thoại tư vấn nó ra cho phiên làm việc. Bạn có thể gọi các package sẽ được thiết đặt bằng hàm library() tự base R. Coi chương R cơ phiên bản để biết thêm tin tức về những package trong 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 and viz )

Nhập dữ liệu

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


Thêm biến hạng mục mới

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

Lưu ý rằng lúc bạn biến hóa một cột dạng số thành dạng factor, bạn sẽ không thể tiến hành các đo lường và thống kê thống kê đối với dữ liệu dạng số trên cột kia nữa.


Tạo biến

Chúng ta sẽ sử dụng một biến bao gồm sẵn, tên là days_onset_hosp (số ngày, tính từ khi bước đầu có triệu chứng cho tới khi nhập viện) và chế tạo một trở nên mới có tên delay_cat bằng cách phân loại các giá trị trong những hàng của biến tất cả sẵn kia thành một trong những nhóm khác nhau. Bọn họ sẽ triển khai việc này bởi hàm case_when() vào package dplyr, hàm này sẽ giúp đỡ áp dụng tuần tự các tiêu chí logic (phía bên phải) cho mỗi giá trị của biễn bao gồm sẵn cùng trả về giá trị mặt trái tương ứng ở biến bắt đầu delay_cat. Đọc thêm về case_when() trên chương có tác dụng sạch số liệu và các hàm quan tiền 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ự mặc định của những giá trị
Khi thực hiện hàm case_when(), biến bắt đầu delay_cat tạo thành sẽ là một trong biến hạng mục với kiểu tài liệu là ký tự - chưa phải là 1 trong những factor. Vị đó, vào bảng tần suất dưới đây, chúng ta thấy rằng các giá trị xuất hiện thêm theo thứ tự khoác định của bảng chữ cái, điều này không có nhiều ý nghĩa trực quan:


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


*

11.2 thay đổi sang factor

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

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

Dưới đây, công ty chúng tôi sử dụng hàm mutate() với hàm fct_relevel() để chuyển đối biến có sẵn delay_cat trường đoản cú dạng cam kết tự quý phái dạng factor. Trở nên delay_cat đã được chế tác ở phần sẵn sàng bên trên.


Các “giá trị” độc nhất vô nhị trong biến đổi số được hotline là những “thứ bậc” của trở thành factor. những thứ bậc này được bố trí theo một độc thân tự độc nhất định và có thể được in ra bằng hàm levels() từ bỏ base R, hoặc bạn 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() trường đoản cú package janitor. Bơ vơ tự này sẽ tiến hành hiển thị theo trang bị tự của bảng chữ cái. để ý rằng NA không được xem là một lắp thêm bậc trong factor.


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


*

Thêm sản phẩm công nghệ bậc

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


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

Xóa thứ bậc

Nếu bạn thực hiện hàm fct_drop(), những thứ bậc “không được sử dụng” và không tồn tại quan sát nào sẽ bị loại bỏ bỏ ngoài factors. Máy bậc mà chúng ta đã thêm nghỉ ngơi trên (“Not admitted to lớn a hospital”) có tồn tại cơ mà thực tế không tồn tại dòng nào đựng giá trị này. Vày vậy, bọn chúng sẽ bị nockout bỏ khỏi đổi mới factor của bọn chúng ta bằng cách sử dụng hàm fct_drop() như sau:


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

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

Các hàm trong package này có thể được áp dụng cho biến dạng factor trong hai trường vừa lòng dưới đây:

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

Thay thay đổi thủ công

Hàm này được sử dụng để đổi khác trật tự của các thứ bậc vào một biến tấu factor theo phong cách thủ công. Giả dụ hàm này được áp dụng trên một biến dạng khác, không phải factor, hàm để giúp đỡ chuyển biến hóa đó thanh lịch dạng factor trước.

Trong vết ngoặc đối kháng trước tiên điền thương hiệu của trở nên factor, tiếp đến điền:

Chỉ một giá trị thứ bậc cùng với vị trí tương ứng mong muốn, áp dụng đối số after =

Dưới đấy là một lấy ví dụ như về biến đổi delay_cat thành dạng factor (mặc dù biến hóa này đã ở dạng Factor rồi) và thu xếp lại các thứ bậc theo thứ tự mong muốn.


# re-define màn chơi orderlinelist linelist %>% mutate(delay_cat = fct_relevel(delay_cat, c(", "2-5 days", ">5 days")))
Nếu các bạn chỉ muốn chỉ xác định trí cho một thứ bậc, chúng ta cũng có thể dùng hàm fct_relevel() và thực hiện đối số after = để hướng đẫn một cực hiếm thứ bậc với vị trí tương xứng mong muốn. Ví dụ: lệnh dưới đây chuyển máy bậc “# re-define màn chơi 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 màn chơi 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 sống biểu đồ thiết bị hai, tiêu đề mang định của trục x được hiện khá tinh vi - chúng ta có thể sử title này bằng đối số labs() trong ggplot2.

Xem thêm: Cách Mở Khóa Điện Thoại Samsung Khi Quên Mật Khẩu Chỉ Trong 10 Giây




# 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 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 lớn 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 khổng lồ admission (days)", title = "Ordered by median CT value in group")+ theme_classic()+ theme(legend.position = "none")

*
*

Lưu ý vào ví dụ bên trên không có bước nào được yêu cầu cần tiến hành trước khi call hàm ggplot() - câu hỏi nhóm và đo lường và tính toán đều được thực hiện 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 lớn 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 thứ ggplot (), chỉ việc thêm đối số drop = FALSE vào hàm liên quan scale_xxxx(). Tất cả các lắp thêm bậc trong biến chuyển factor sẽ tiến hành hiển thị, bất kỳ chúng bao gồm trong tài liệu hay không. Nếu những thứ bậc trong biến đổi factor của người tiêu dùng đượ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 khách hàng được hiển thị cùng với x = (đến trục x) màu sắc = hoặc kích cỡ =, bạn sẽ cung cấp cho chúng tới scale_color_discrete() hoặc scale_size_discrete().

Ví dụ này là một biểu đồ gia dụng cột ck của đội tuổi, theo bệnh dịch viện. Bài toán thêm scale_fill_discrete (drop = FALSE) bảo đảm rằng tất cả các nhóm tuổi đều mở ra 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 khách hàng 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 bài toán này đơn giản và dễ dàng với hàm floor_date() vào package lubridate, như được phân tích và lý giải trong chương nhóm dữ liệu. Những giá trị trả về sẽ thuộc nhiều loại Ngày tháng với định dạng YYYY-MM-DD. Nếu bạn sử dụng cột này trong một biểu đồ, tháng ngày sẽ thoải mái và tự nhiên được sắp tới xếp đúng mực và bạn không đề xuất phải lo lắng về vật dụng bậc hoặc thay đổi sang dạng factor. Xem biểu đồ vật histogram vào hàm ggplot() về các ngày khởi phát mặt 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 to 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 khổng lồ display (YYYY-WWw) epiweek_formatted = factor(epiweek_formatted)) # Convert to lớn 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 các tuần trước các năm (“Www-YYYY”) (“%W-%Y”), máy tự những thứ bậc sẽ thu xếp mặc định theo bảng chữ cái và điều này là không đúng mực (ví dụ: 01-2015 vẫn là trước 35-2014). Bạn có thể cần phải điều chỉnh thứ tự theo phong cách thủ công, đây vẫn là một quá trình dài khó khăn .

Để hiển thị cấp tốc theo mặc định, thực hiện hàm date2week() trong package aweek. Bạn 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 factor gồm thứ tự. Factor sẽ bao hàm các vật dụng bậc cho tất cả những tuần có thể có trong khoảng thời hạn - ngay cả khi không tồn tại trường đúng theo nào lộ diệ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 làm việc với ngày tháng để tìm hiểu thêm tin tức về package aweek. Nó cũng đưa thông tin về hàm hòn đảo ngược week2date().

Trong bài viết này

You can run R scripts directly in power BI Desktop & import the resulting datasets into a power BI Desktop data model.

Install R

To run R scripts in power BI Desktop, you need lớn install R on your local machine. You can download and install R for không lấy phí from many locations, including the cfldn.edu.vn R Application Network & the CRAN Repository. The current release supports Unicode characters and 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 and create a data model. With the data model, you can create reports & share them on the power BI service. R scripting in nguồn BI Desktop now supports number formats that contain decimals (.) & commas (,).

Prepare an R script

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

To run the script in power nguồn BI Desktop, make sure the script runs successfully in a new & unmodified workspace. This prerequisite means that all packages và dependencies must be explicitly loaded and 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 lớn represent the data you want to lớn import lớn Power BI in a data frame.Columns typed as Complex and Vector aren"t imported, and they"re replaced with error values in the created table.Values of N/A are translated khổng lồ 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 lớn the working directory, rather than a relative path.

Run your R script & import data

Now you can run your R script to import data into power nguồn 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 và select OK. The latest installed version is displayed as your R engine.

*

Select OK khổng lồ run the R Script. When the script runs successfully, you can then choose the resulting data frames to địa chỉ to the power nguồn BI model.

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

*

Refresh

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

Next steps

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