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
- ヘッダは先にのぞいておく必要がある
-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も割と軽快でした。
コメント
コメントを投稿