카테고리 보관물: 컴퓨터언어

R – data.frame의 특정 컬럼의 NA를 0으로 채우기

별것 아닙니다만
data.frame에 NA가 섞인 경우에 이 결측치(missing value)를 채울 때 특정 컬럼의 결측치만 0으로 채워주고 싶을 때가 있습니다.
한 컬럼은 어떻게 하는 기억하실텐데요. 두 개 이상의 컬럼에 있는 NA를 모두 0으로 채우려면 apply를 써야하나? for loop을 돌려야 하나  이렇게 생각하기 쉬운데 이렇게 하면 됩니다.

index <- c("1번줄", "2번줄", "3번줄", "4번줄", "5번줄")  # 그냥 텍스트 컬럼
column1 <- c(1, 2, 3, 4, NA)  # 숫자 컬럼
column2 <- c(2, 3, 4, NA, 5)  # 숫자 컬럼
df <- as.data.frame(cbind(index, column1, column2))  # data.frame 생성

df
df[is.na(df[, "column1"]), "column1"] <- 0  # 한 컬럼의 결측치만 처리할 때는 이렇게
df

df
df[, c("column1", "column2")][is.na(df[, c("column1", "column2")])] <- 0  # 두 컬럼의 결측치를 처리할 때는 이렇게
df

Rstudio에서 실행해보고 결과를 어떻게 되는지 금방  알 수 있습니다.

R 언어의 구조적에서 [와 ]가 연산자 심볼이라는 것을 기억하면 사실 간단한 것인데 여러가지 다른 랭귀지를 섞어서 사용하다면 저 컨셉을 매번 까먹습니다.

 

RStudio server 1.0.44 R notebook 기능 확인

지난 포스트에서 RStudio 1.0.44를 설치해서 R notebook 기능을 확인해 본 후에
RStduio server도 잘 작동하는지 확인하기 위해서
사용하고 있던 RStduio server를 버전업 했습니다.

기능은 RStduio desktop 처럼 깔끔하게 잘 작동합니다.

미리보기(preview) 기능도 잘 작동을 합니다.

잘 될 수밖에 없는 것이 Rstudio desktop과 Rstudio server는 소스가 함께 관리됩니다. 같은 소스로 desktop과 server를 빌드(build)만 따로 할 뿐입니다.
그렇게 때문에 한쪽이 desktop이 업그레이드되면 server도 거의 동일하게 업그레이드됩니다.

그런데 제가 RStudio server의 최신 버전들이 한글 입력에 문제가 있어서 RStduio server를 다운그레이드 했었다는 사실을 깜빡 잊었습니다. (망했어요) 이 버그는 아직 수정이 안되었네요.
이것은 RStudio server가 사용하는 Javascript editor library인 ace editor때문인데
ace editor가 버그 픽스가 잘 안되는 경향이 있어서 아무래도 한참 동안은 고쳐지지 않을 것 같습니다.
RStudio server에서 한글 입력을 빈번하게 하시는 분이라면 고민을 하셔야 할 것 같습니다.

저는 도로 다운그레이드를 할지를 고민해 봐야 겠습니다. (아.. 이 망할놈의 건망증)

RStudio v1.0 릴리즈

요 며칠 사이에 R관련 커뮤니티에서 새소식으로 메일이 날아오고 있는데 가장 많이 보이는 것이 RStduio v1.0이 릴리즈 되었다는 것입니다.
바꿔 말하면 그동안 RStduio의 버전이 0.x대 였다는 것이지요.
2011년 2월에 0.92로 메이저(major) 릴리즈가 공개되고 2016년 11월 2일에 버전 1.0을 넘기게 되었습니다. 오래 걸렸네요.

중요한 업데이트 내용은 공식 블로그를 보시면 되겠습니다.
https://blog.rstudio.org/ 여기를 가보시면 되지만
귀찮아 하실 분들을 위해서 업데이트 내용을 간단히 정리해 보면 다음과 같습니다.

R Notebooks 지원

iptyhon-notebook이나 기타 다른 분석 인터페이스에서 유행처럼 지원하는 notebook 기능을 지원합니다. 단 포맷이 Rmd(R markdown 형식) 이므로 다른 노트북 보다는 더 유연한다고 할 수 있습니다. Rmd파일을 그대로 Notebook으로 인식합니다.

물론 R은 원래 반 대화형 모드(interactive mode)로 코드의 중간부분만 선택해서 따로 실행할 수 있기 때문에 Notebook 기능을 지원하지 않아도 노트북 흉내를 낼 수 있었습니다.
R Notebook은 다른 노트북 처럼 입력창의 중간중간에 결과를 확인할 수 있다는 장점이 있어 훨씬 직관적입니다.
이제 Notebook 흉내가 아닌 Notebook 기능을 그대로 쓸 수 있습니다.
chunk(청크; R markdown내에 듬성듬성 있는 R코드 영역)에 대한 부분만 따로 실행하거나 전체를 실행해서 preview하거나 할 수 있습니다.

그 외에도 노트북은 수식이나 문장 사이에 삽입하는 코드들에 대한 대화형 모드를 같이 지원합니다.

위 그림과 같이 LaTex으로 수식을 입력하는 등의 것들입니다.

Spark with sparklyr

sparkyr 패키지를 이용해 Spark(스파크)를 지원합니다. Spark내에 있는 dataframe을 RStduio에서 미리보기 하거나 할 수 있다고 합니다.
아직 테스트 해보지는 않았지만 조만간 해봐야겠습니다.

Profvis 패키지를 이용한 프로파일링

보통의 다른 랭귀지들은 IDE(통합개별환경)에서나 또는 별도의 도구를 이용해서 profiling(프로파일링)을 할 수 있습니다.
실행되는 코드중에서 어느 부분이 얼마만큼의 시간과 자원을 소비하는지에 대한 트레이싱인데 RStduio가 이제 profiling을 지원한다는 얘기입니다.
어느 구간에서 가장 오랜 시간이 걸렸는지 시각화해서 보여줍니다.

화면은 대충 아래와 같습니다.

코드를 입력하고 코드를 선택한 후에 Profile 메뉴를 눌러주면 됩니다. (어렵지 않아요.^ㅡ^)

Data Import(데이터 적재) 기능 강화

File 메뉴의 Data Import 메뉴를 이용해서 File이나 URL에 대한 파일의 미리보기 기능을 지원합니다. 하지만, 공식 블로그에 적힌 예제를 실행했더니 에러가 나더군요.
파일에 따라 에러가 발생하는지 아닌지는 확인해 보지 않았습니다.
제 작업환경이 이상한 것인지도 모릅니다. 버그라면 뭐 나중에 고쳐주겠죠. (우선 포기…)

그외에 다른 기능에 대한 내용은 없습니다. RStduio 최신 버전을 유지하고 계셨다면 위에 열거된 내용 빼고는 큰 차이는 없어 보입니다.
그리고 더불어서 RStudio Server도 v1.0을 넘겼습니다. 공식 블로그에서는 따로 언급이 없지만 위에 기능들이 함께 지원되었을 가능성이 큽니다.

마이크로소프트 Revolution Analytics사 인수

최근에 바쁘다 보니 이런 저런 뉴스를 놓치고 있었나 봅니다.
마이크로소프트(Microsoft)사가 Revolution Analytics사를 인수했다네요.
뉴스가 나온 시기가 좀 지났지만 임팩트가 있는 뉴스라고 생각해서 포스트를 남깁니다.

R을 주력으로 사용하시는 분들은 아실텐데요 Revolution Analytics사는 R의 상용화 제품을 만들어서 판매하는 회사입니다.

Microsoft 제품군 위에서 어떤 포지션에 위치할지 모르겠지만 기대가 조금 됩니다. 어떤 시너지가 일어날지 궁금하네요.

원문링크

colorbrewer2.org 소개

R의 ggplot2 패키지에 보면 scale_color_brewer() 라는 함수가 있습니다. 이 함수는 colorbrewer2.org 사이트에서 제공하는 색상 팔레트를 플롯에 적용해 주는 것인데요. 이것과 관련된 함수로는 scales라는 패키지의 show_col과 brewer_col() 이 있습니다. 이 함수들은 colorbrewer2.org 사이트의 컬러 팔레트를 확인할 수 있게 해줍니다.

이렇게요

코드

#!!{"brush":"r"}
library(scales)  # scales 패키지 필요
show_col(brewer_pal(pal="Purples")(9))

R 플롯 출력 결과 show_col로 찍은 color값

colorbrewer2.org 사이트가 R의 예제 코드를 보다 보면 흔치 않게 나오는 사이트이기 때문에 소개해 드립니다. 요렇게 생긴 사이트입니다.

colorbrewer2.org 사이트

원래 카로트그래피(Cartography) 그러니까 지도와 관련 데이터 시각화를 위한 색상을 제공하는 곳인데요.
색상이 잘 정리되어 있어서 일반적인 데이터 시각화를 하는데 색상을 선택하기 위해서도 많이 애용하는 사이트입니다.

심심할 때 들러보세요. ^-^