joinに関してshellとRとpythonと

結論

import pandas as pd
leftfile = pd.read_csv("leftfile.txt", sep="\t")
rightfile = pd.read_csv("rightfile.txt", sep="\t")
mergedfile = pd.merge(leftfile, rightfile, how='outer', sort=True)

欠損値を含むいくつかのテーブルをある値をキーにしてjoinしたい。もちろんヘッダ込みで、欠損はNA埋めて。こういう場合いくつか方法があるように思いますが、環境的にpythonしか使えなかったという。

Rで

Rではdplyrが便利です

dplyr::full_join(leftfile, rightfile, by="V1")

しかし権限がなくてライブラリのインストールができなかったという・・・。

Shellで

shellは以下のように実現できます

join -a 1 -a 2 -e "NA" -o auto leftfile.txt rightfile.txt
  1. ヘッダは先にのぞいておく必要がある
  2. -o autoが効かないバージョンだと-o 1.1,1.2,1.3…2.2,2.3…と延々オプションを指定することになる

などという問題が。

pythonで

pandasは使えた()

import pandas as pd
leftfile = pd.read_csv("leftfile.txt", sep="\t")
rightfile = pd.read_csv("rightfile.txt", sep="\t")
mergedfile = pd.merge(leftfile, rightfile, how='outer', sort=True)

なんとなくshellでjoinを使うのが早いのかなと思っていましたが、dplyrは早いですし、pandasも割と軽快でした。

コメント

このブログの人気の投稿

Inverse-normal transformation

SKAT

locuszoom