Hong의 모든 글

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

 

MySQL 사용자 권한 설정 방법

MySQL에서 사용자의 권한을 모두 열어주는 query입니다.

  1. 먼저 host에 terminal로 접속합니다. 또는 권한이 있는 사용자의 계정으로 원격으로 접속합니다.
  2. mysql 데이터베이스를 현재 디렉토리로 변경합니다.
  3. 다음의 query를 실행합니다.
  4. root 계정으로 localhost를 제외한 모든 host로부터 접속하는 계정에 대해서 전체 권한을 열어주려면 그대로 실행하면 됩니다.
    1. 만약 특정 계정과 특정 호스트를 지정하려면 ON *.* TO root@’%’에서 root와 ‘%’ 부분을 원하는 것으로 변경하면 됩니다.
GRANT EXECUTE
    , PROCESS
    , SELECT
    , SHOW DATABASES
    , SHOW VIEW
    , ALTER
    , ALTER ROUTINE
    , CREATE
    , CREATE ROUTINE
    , CREATE TEMPORARY TABLES
    , CREATE VIEW
    , DELETE
    , DROP
    , EVENT
    , INDEX
    , INSERT
    , REFERENCES
    , TRIGGER
    , UPDATE
    , CREATE USER
    , FILE
    , LOCK TABLES
    , RELOAD
    , REPLICATION CLIENT
    , REPLICATION SLAVE
    , SHUTDOWN
    , SUPER
ON *.* TO root@'%'
WITH GRANT OPTION
;
FLUSH PRIVILEGES
;

 
참고로 사용자를 추가하는 query는 MariaDB를 기준으로 다음과 같습니다.

CREATE USER OR REPLACE 'root'@'%' IDENTIFIED BY 'YOUR-PASSWORD';