글쓴이: THE-R

Five Tips to Improve Your R Code (article) by DataCamp

Five useful tips that you can use to effectively improve your R code, from using seq() to create sequences to ditching which() and much more! @drsimonj here with five simple tricks I find myself sharing all the time with fellow R users to improve their code! 1. More fun to sequence from 1 Next time you use the colon operator to create a sequence from 1 like 1:n, try seq(). # Sequence a vector x <- runif(10) seq(x) #> [1] 1 2 3 4 5 6 7 8 9 10 # Sequence an integer seq(nrow(mtcars)) #> [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 #> [24] 24 25 26 27 28 29 30 31 32 The colon operator can produce unexpected results that can create all sorts of problems without you noticing! Take a look at what happens when you want to sequence the length of an empty vector: # Empty vector x <- c() 1:length(x) #> [1] 1 0 seq(x) #> integer(0) You’ll also notice that this saves you from using functions like length(). When applied to an object of a certain length, seq() will automatically create a sequence from 1 to the length of the object. 2. vector() what you c() Next time you create an empty vector with c(), try to replace it with vector("type", length). # A numeric vector with...

Read More

thomasp85/patchwork: The Composer of ggplots

patchwork     The goal of patchwork is to make it ridiculously simple to combine separate ggplots into the same graphic. As such it tries to solve the same problem as gridExtra::grid.arrange() but using an API that incites exploration and iteration. Installation You can install patchwork from github with: # install.packages("devtools") devtools::install_github("thomasp85/patchwork") Example The usage of patchwork is simple: just add plots together! library(ggplot2) library(patchwork) p1 <- ggplot(mtcars) + geom_point(aes(mpg, disp)) p2 <- ggplot(mtcars) + geom_boxplot(aes(gear, disp, group = gear)) p1 + p2 you are of course free to also add the plots together as part of the same plotting operation: ggplot(mtcars) + geom_point(aes(mpg, disp)) + ggplot(mtcars) + geom_boxplot(aes(gear, disp, group = gear)) layouts can be specified by adding a plot_layout() call to the assemble. This lets you define the dimensions of the grid and how much space to allocate to the different rows and columns p1 + p2 + plot_layout(ncol = 1, heights = c(3, 1)) If you need to add a bit of space between your plots you can use plot_spacer() to fill a cell in the grid with nothing p1 + plot_spacer() + p2 You can make nested plots layout by wrapping part of the plots in parentheses – in these cases the layout is scoped to the different nesting levels p3 <- ggplot(mtcars) + geom_smooth(aes(disp, qsec)) p4 <- ggplot(mtcars) + geom_bar(aes(carb)) p4 + { p1 + { p2 + p3 + plot_layout(ncol = 1) } }...

Read More

rOpenSci | Magick 1.6: clipping, geometries, fonts, fuzz, and a bit of history

Magick 1.6: clipping, geometries, fonts, fuzz, and a bit of history   Jeroen Ooms   | DECEMBER 5, 2017 This week magick 1.6 appeared on CRAN. This release is a big all-round maintenance update with lots of tweaks and improvements across the package. The NEWS file gives an overview of changes in this version. In this post we highlight some changes. library(magick) stopifnot(packageVersion('magick') >= 1.6) If you are new to magick, check out the vignette for a quick introduction. Perfect Graphics Rendering I have fixed a few small rendering imperfections in the graphics device. The native magick graphics device image_graph() now renders identical or better quality images as the R-base bitmap devices png, jpeg, etc. One issue was that sometimes magick graphics would show a 1px black border around the image. It turned out this is caused by rounding of clipping coordinates. When R calculates clipping area it often ends up at non-whole values. It is then up to the graphics device to decide what to do with the pixel that is partially clipped. Let’s show clipping in action: testplot <- function(title = ""){ plot(1, main = title) abline(0, 1, col = "blue", lwd = 2, lty = "solid") abline(0.1, 1, col = "red", lwd = 3, lty = "dotted") abline(0.2, 1, col = "green", lwd = 4, lty = "twodash") abline(0.3, 1, col = "black", lwd = 5, lty = "dotdash") abline(0.4, 1, col = "purple", lwd = 6, lty =...

Read More

데이터 전처리 -데이터 전처리(클린징)에 대한 모든 것

본 포스팅에서는 탐색적 데이터 분석(EDA)라고 불리우는 단계에서 수행해야 할 Task에 대해 순서대로 정리해 보고자 합니다. EDA는 데이터 셋 확인 – 결측값 처리 – 이상값 처리 – Feature Engineering 의 순서로 진행합니다. 데이터 분석의 단계 중 가장 많은 시간이 소요되는 단계가 바로 Exploratory Data Analysis 단계입니다. Forbes에서 인용한 CrowdFlower의 설문 결과에 따르면 데이터 분석가는 업무 시간 중 80%정도를 데이터 수집 및 전처리 과정에 사용한다고 합니다. (하지만 동일 설문에서 데이터 분석 업무 중 가장 싫은 단계로 꼽히기도 했다죠.) 본 포스팅에서는 탐색적 데이터 분석(EDA)라고 불리우기도 하는 데이터 전처리 단계에서 수행해야 할 Task에 대해 순서대로 정리해 보고자 합니다.  데이터 전처리는 데이터 셋 확인 – 결측값 처리 – 이상값 처리 – Feature Engineering 의 순서로 진행합니다. 1 데이터 셋 확인 분석하고자 하는 데이터 셋과 친해지는 단계입니다. 데이터 셋에 대해 아래 두가지 확인 작업을 하게 됩니다. A. 변수 확인 독립/종속 변수의 정의, 각 변수의 유형(범주형인지 연속형인지), 변수의 데이터 타입(Date인지, Character인지, Numeric 인지 등)을 확인합니다. 다른 툴도 마찬가지겠지만, R을 사용하는 분들은 변수의 데이터 타입에 따라 모델 Fitting 할때 전혀 다른 결과가 나오기 때문에 사전에 변수 타입을 체크하고, 잘못 설정되어 있는 경우 이 단계에서 변경해 주세요. B. RAW 데이터 확인 B-1. 단변수 분석 변수 하나에 대해 기술 통계 확인을 하는 단계입니다. Histogram이나 Boxplot을 사용해서 평균, 최빈값, 중간값 등과 함께 각 변수들의 분포를 확인하면 됩니다. 범주형 변수의 경우 Boxplot을 사용해서 빈도 수 분포를 체크해 주면 됩니다. B-2. 이변수 분석 변수 2개 간의 관계를 분석하는 단계 입니다. 아래 그림과 같이 변수의...

Read More

ggplot2 막대그래프

막대그래프 오늘도 ggplot문제 하나 드리겠습니다. ggplot의 geom_bar()는 stacked bar plot을 만드는데 쓰입니다. 예를 들어 moonBook 패키지의 acs데이타를 사용하여 남여 성별과 흡연 상태에 따른 bar plot을 만들면 다음과 같은 그래프를 만들 수 있습니다. require(ggplot2) require(moonBook) ggplot(data=acs,aes(x=sex,fill=smoking)) +geom_bar() 하지만 position=”fill”로 하시면 proportional stacked bar plot을 만들수 있습니다. ggplot(data=acs,aes(x=sex,fill=smoking)) +geom_bar(position="fill") 이 그래프는 상당히 정보를 왜곡하고 있습니다. 즉 남여의 숫자가 다른데 막대그래프의 폭이 같기 때문에 보기에 따라 남여 전체 숫자가 같게 느껴집니다. R에 기본으로 포함되어 있는 mosaicplot은 이와 같은 왜곡을 해결해줍니다. mosaicplot(sex~smoking,data=acs) 또한 spineplot() 함수는 spineplot을 그려줍니다. spineplot(factor(smoking)~factor(sex),data=acs) 문제 1) ggplot을 이용한 spineplot spineplot의 개념을 ggplot에 도입하면 다음과 같은 그림을 그릴 수 있습니다. 그리고 columnwise ratio를 라벨로 붙여준다면 더욱 좋겠습니다. 또한 geom_bar()와 같이 position=”dodge”나 “stack”도 그릴 수 있으면 좋겠습니다. spinogram : histogram의 확장 spineplot()함수를 연속형변수에 적용하면 spinogram이 됩니다. spineplot(factor(sex)~age,data=acs) 문제 2) ggplot을 이용한 spinogram 이 spinogram을 ggplot으로 그려보면 다음과 같이 됩니다. 또한 geom_bar()와 같이 position=”dodge”나 “stack”도 그릴 수 있으면 좋겠습니다. 이와 같은 일을 할 수 있는 함수를 제작해보셔요. 즉 R 에 기본적으로 포함되어 있는 spineplot()의 ggplot버젼입니다. 소스: rquiz/quiz.md at master ·...

Read More


error: Content is protected !!