Take Your Time

仕事や研究、コンピューターとの付き合い方

merge関数とうまく付き合う

merge関数は、2つのデータセットをくっつけるという頻発する作業に使えるので重宝するが、結構怖い関数でもある。
というのも、何も考えずにデータx,yをmerge(x,y)で統合しようとすると暴走してPCが止まったりする。
これを防ぐには、きちんと引数by=""を指定して上げる必要がある。
merge(x,y, by = "id")のように。
ただ、分析の結果(例えば主成分分析のスコア)などを元のデータフレームに統合したいとき、id列がなかったりするので、その場合は、まず、row.names()でid列を加えるとともに、欠損値などで削除されてしまった行も残すために、mergeの引数allをTRUEにしてやる。
つまり、xというデータフレームがあって、
r<-prcomp(x)
z <- data.frame(score = r$x[,1], id = as.numeric(row.names(r$x))
x <- merge(x,z, all = T, by = "id")
でおk。