R 코드 청크 옵션
영상에서 몇 가지 R 코드 청크 옵션을 살펴봤습니다. R 코드 청크에는 이름을 붙일 수도 있어요. 특히 문서가 크거나 청크 내부에 오류가 있을 때 유용합니다. 예를 들어 RStudio에서 문서를 knit할 때 오류가 발생하면, 더 쉽게 어느 청크에서 생겼는지 찾을 수 있어요. 보고서의 일부 청크에는 이런 개념을 보여 주기 위해 이름이 붙어 있습니다. 청크 옵션은 청크 이름 뒤에 쉼표를 찍고 이어서 추가합니다. 예: {r name, option = value}
가장 자주 쓰는 청크 옵션 중 하나는 출력 표시를 제어하는 것입니다. 기본값으로 RMarkdown 문서에서는 메시지, 경고, 오류 등 모든 출력이 표시됩니다. 예를 들어 echo = FALSE 같은 옵션을 지정하면, 코드는 그대로 실행하면서도 R 코드 자체의 표시를 숨길 수 있습니다. 더 다양한 표시 옵션은 영상을 참고하세요.
세션이 중단되지 않도록 청크 이름과 청크 옵션 사이를 반드시 쉼표로 구분하세요.
이 연습은 강의의 일부입니다
Tidyverse로 데이터 소통하기
연습 안내
- 14행에서 첫 번째 R 코드 청크에
message옵션을 사용해 메시지를 숨겨, 패키지를 로드할 때 가끔 나오는 출력이 표시되지 않도록 하세요. - 64행의
defining_a_theme청크는 사용자 지정 플롯으로 보고서를 풍부하게 하지만, 그 코드는 독자에게 그다지 중요하지 않습니다.- 모든 코드는 숨기되, R이 해당 코드를 여전히 실행하도록 하세요(해당 청크 옵션이 기억나지 않으면 영상을 다시 보세요).
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
{"my_document.Rmd":"---\ntitle: \"The reduction in weekly working hours in Europe\" \nsubtitle: \"Looking at the development between 1996 and 2006\"\nauthor: \"Insert your name here\"\noutput: html_document\n---\n\n## Summary \n\nThe **International Labour Organization (ILO)** has many [data sets](http://www.ilo.org/global/statistics-and-databases/lang--en/index.htm) on working conditions. For example, one can look at how weekly working hours have been decreasing in many countries of the world, while monetary compensation has risen. In this report, *the reduction in weekly working hours* in European countries is analysed, and a comparison between 1996 and 2006 is made. All analysed countries have seen a decrease in weekly working hours since 1996 – some more than others.\n\n## Preparations \n\n```{r loading_packages}\nlibrary(dplyr)\nlibrary(ggplot2)\nlibrary(forcats)\n```\n\n## Analysis\n\n### Data\n\nThe herein used data can be found in the [statistics database of the ILO](http://www.ilo.org/ilostat/faces/wcnav_defaultSelection;ILOSTATCOOKIE=ZOm2Lqrr-OIuzxNGn2_08bNe9AmHQ1kUA6FydqyZJeIudFLb2Yz5!1845546174?_afrLoop=32158017365146&_afrWindowMode=0&_afrWindowId=null#!%40%40%3F_afrWindowId%3Dnull%26_afrLoop%3D32158017365146%26_afrWindowMode%3D0%26_adf.ctrl-state%3D4cwaylvi8_4). For the purpose of this course, it has been slightly preprocessed.\n\n```{r loading_data}\nload(url(\"http://s3.amazonaws.com/assets.datacamp.com/production/course_5807/datasets/ilo_data.RData\"))\n```\n\n```{r generating_summary_statistics}\n# Some summary statistics\nilo_data %>%\n group_by(year) %>%\n summarize(mean_hourly_compensation = mean(hourly_compensation),\n mean_working_hours = mean(working_hours))\n```\n\nAs can be seen from the above table, the average weekly working hours of European countries have been descreasing since 1980.\n\n### Preprocessing\n\nThe data is now filtered so it only contains the years 1996 and 2006 – a good time range for comparison. \n\n```{r}\nilo_data <- ilo_data %>%\n filter(year == \"1996\" | year == \"2006\")\n \n# Reorder country factor levels\nilo_data <- ilo_data %>%\n # Arrange data frame first, so last is always 2006\n arrange(year) %>%\n # Use the fct_reorder function inside mutate to reorder countries by working hours in 2006\n mutate(country = fct_reorder(country,\n working_hours,\n last))\n``` \n\n### Results\n\nIn the following, a plot that shows the reduction of weekly working hours from 1996 to 2006 in each country is produced.\n\nFirst, a custom theme is defined.\n\n```{r defining_a_theme}\n# Better to define your own function than to always type the same stuff\ntheme_ilo <- function(){\n theme_minimal() +\n theme(\n text = element_text(family = \"Bookman\", color = \"gray25\"),\n plot.subtitle = element_text(size = 12),\n plot.caption = element_text(color = \"gray30\"),\n plot.background = element_rect(fill = \"gray95\"),\n plot.margin = unit(c(5, 10, 5, 10), units = \"mm\")\n )\n}\n``` \n\nThen, the plot is produced. \n\n```{r}\n# Compute temporary data set for optimal label placement\nmedian_working_hours <- ilo_data %>%\n group_by(country) %>%\n summarize(median_working_hours_per_country = median(working_hours)) %>%\n ungroup()\n\n# Have a look at the structure of this data set\nstr(median_working_hours)\n\n# Plot\nggplot(ilo_data) +\n geom_path(aes(x = working_hours, y = country),\n arrow = arrow(length = unit(1.5, \"mm\"), type = \"closed\")) +\n # Add labels for values (both 1996 and 2006)\n geom_text(\n aes(x = working_hours,\n y = country,\n label = round(working_hours, 1),\n hjust = ifelse(year == \"2006\", 1.4, -0.4)\n ),\n # Change the appearance of the text\n size = 3,\n family = \"Bookman\",\n color = \"gray25\"\n ) +\n # Add labels for country\n geom_text(data = median_working_hours,\n aes(y = country,\n x = median_working_hours_per_country,\n label = country),\n vjust = 2,\n family = \"Bookman\",\n color = \"gray25\") +\n # Add titles\n labs(\n title = \"People work less in 2006 compared to 1996\",\n subtitle = \"Working hours in European countries, development since 1996\",\n caption = \"Data source: ILO, 2017\"\n ) +\n # Apply your theme \n theme_ilo() +\n # Remove axes and grids\n theme(\n axis.ticks = element_blank(),\n axis.title = element_blank(),\n axis.text = element_blank(),\n panel.grid = element_blank(),\n # Also, let's reduce the font size of the subtitle\n plot.subtitle = element_text(size = 9)\n ) +\n # Reset coordinate system\n coord_cartesian(xlim = c(25, 41))\n```\n\n\n"}