data.frame melt 시키기

테이블의 컬럼들을 한 컬럼으로 내리고 값을 따로 빼는 것을 melt(melting)라고 합니다.그 반대로 값을 컬럼으로 올리는  작업을 cast (casting)라고 합니다.
이런 것을 엑셀이나 DB에서는 pivot(pivoting 추축) 이라고도 하고 또 transform이라고도 말합니다.

R과 python에서 melt하는 간단한 코드 스니펫을 올립니다.  Google에 검색을 하면 다 나오는 것이지만 순전히 제 편의를 위해서 올려둡니다.

R은 특히 ggplot2를 사용할 때 facet을 쓰려면 melt된 상태여야 하는 것이 있어서 연습이 필요합니다만 늘 까먹습니다. (전 바보인가봐요)

R코드입니다.
다른 방법도 많지만 R은 reshape2 패키지를 쓰는 것이 편합니다.

# install.packages("reshape2")
library(reshape2)  # 해들리 만세
iris  # 이렇게 생겼어요
iris.molten <- melt(iris, id.vars=c("Species"))  # Species 는 놔두고 모두 멜트
iris.molten  # melt한 data.frame

python코드입니다.
python은 당연히 Pandas에 melt 함수가 있습니다.

from sklearn import datasets  # iris data 때문에 로딩했어요
import pandas as pd  # 팬더스
import numpy as np  # 데이터 변환을 하는데 numpy가 필요할 뿐이었어요
iris = datasets.load_iris()  # 예제를 위해서 iris가 필요할 뿐
print(iris) # 이렇게 생겼는데
iris_df = pd.DataFrame(data=iris.data, columns=iris.feature_names) # 일단 iris가 dataframe이 아니어서 바꿈
print(pd.melt(iris_df))  # 이렇게 바뀝니다

 

RStudio 1.1 릴리즈

지난 10월 9일 RStudio 1.1이 릴리즈되었습니다.

설치를 하고 나면 다크테마로 설정된 달라진 분위기의 애플리케이션 모습을 볼 수 있습니다.

RStudio v1.1

공식 내용은 RStudio blog에서 확인할 수 있습니다.

https://blog.rstudio.com/2017/10/09/rstudio-v1.1-released/

업데이트 내용은

  • 다크테마 지원
  • 데이터베이스 컨넥터 지원 및 탐색 기능
  • 오브젝트 탐색 기능 강화
  • 터미널 탭 지원
  • 기타 소소한 업데이트

입니다.

당연한 것이겠지만 Rstudio server 1.1도 몇가지 기능 개선과 더불어 릴리즈 되었습니다.

 

Ubuntu에 Go 1.8.x 설치하기

Ubuntu에서 다음과 같은 명령으로 go 언어를 설치할 수 있습니다.

sudo apt-get install golang-go

하지만 현재의 최신 버전은 1.8 이상인데 1.6 정도의 조금 오래된 버전이 설치됩니다.
일반적인 작업을 할 때는 1.6도 큰 문제는 없지만 Go 최신 패키지이나 애플리케이션 중에는 1.8 이상에서만 작동하게 제작된 것이 생겨서 반드시 1.8 이상으로 버전업을 해야 할 수 있습니다.
Go언어를 설치할 때 1.6을 설치했다 나중에 업그레이드하면서 속썪이느니 애초에 높은 버전을 설치하는 것이 좋습니다.
Go언어의 최선 버전은 다음과 같이 설치합니다.

sudo add-apt-repository ppa:longsleep/golang-backports
sudo apt-get update
sudo apt-get install golang-go

설치된 버전은 go version 명령으로 확인할 수 있습니다.

go version

위의 결과는 제 환경에서는 다음과 같이 보입니다.
go version go1.8.3 linux/amd64
1.8.3이 설치된 것을 확인했으니 이제 사용하면 됩니다.

sudo: unable to resolve host xxxxxx 에러 메세지 해결 방법

VPS(클라우드나 가상시스템) 을 사용하는 경우가 이미 생성된 이미지를 그대로 복구했을 때 hostname이 제대로 설정되어 있지 않으면 sudo 명령을 사용할 때 보안 문제로 에러가 발생하며 정상작동하지 않습니다.
아래의 명령어로 현재 Linux에 설정되어 있는 hostname을 알아냅니다.

cat /etc/hostsname

그리고 /etc/hosts 를 열어서 줄을 추가해줍니다.
만약 위의  /etc/hostname에서 알아낸 hostname이 yourhostname 이라면 아래와 같이 합니다.

127.0.0.1 yourhostname