dplyrのinner_joinで2つの条件で結合する際のエラー


Rを用いてdplyrでパネルデータの1回ラグをとったデータを作りたいと考えています。  
plmなどのパッケージの利用も考えましたが、普通の回帰だけでなくより高度な分析も考えているのでデータフレーム自体をいじりたいと考えています。  
データid <\- id.csvは以下のような感じです。

[code]

    ID time y x1 x2 
     1    1 5  7  8
     1    2 2  6 10
     1    3 9  9  6
     2    1 6  2  3
     3    7 1  6  3
    
[/code]

これをdplyrで

[code]

    id1 <- id %>% mutate(time1=time-1)
    id2 <- id %>% select(ID,time,y)
    id3 <- id2 %>% inner_join(id1,by=c("time"="time1","ID"="ID"))
    
[/code]

と操作すると最後のinner_joinのところで

[code]

    Error: Data table joins must be on same key
    
[/code]

とエラーが出てしまうのですが、対処の仕方をご存じの方いらっしゃいましたら回答をお願い致します。




バックエンドとしてdata.tableを用いる場合には、異なるキーによるjoinがまだサポートされていません。

Join with different keys · Issue #20 · hadley/dtplyr  
<https://github.com/hadley/dtplyr/issues/20>

このコードは、`time`と`time1`という異なるキーをjoinしようとしているので`Error: Data table joins must be
on same key`というエラーになるようです。

[code]

    by=c("time"="time1","ID"="ID")
    
[/code]

とりあえずの回避策としては、`time-1`のカラムを`time1`ではなく`time`にすることです。こうすれば同じキーでjoinできます。（そのかわり、もとの`time`を別のカラムに入れておく必要があります）

[code]

    id1 <- id %>% mutate(time_orig = time, time=time-1)
    id2 <- id %>% select(ID,time,y)
    id3 <- id2 %>% inner_join(id1,by=c("time","ID"))
    
[/code]

これで望みの結果になるでしょうか？




バックエンドとしてdata.tableを用いる場合には、異なるキーによるjoinがまだサポートされていません。

Join with different keys · Issue #20 · hadley/dtplyr  
<https://github.com/hadley/dtplyr/issues/20>

このコードは、`time`と`time1`という異なるキーをjoinしようとしているので`Error: Data table joins must be
on same key`というエラーになるようです。

[code]

    by=c("time"="time1","ID"="ID")
    
[/code]

とりあえずの回避策としては、`time-1`のカラムを`time1`ではなく`time`にすることです。こうすれば同じキーでjoinできます。（そのかわり、もとの`time`を別のカラムに入れておく必要があります）

[code]

    id1 <- id %>% mutate(time_orig = time, time=time-1)
    id2 <- id %>% select(ID,time,y)
    id3 <- id2 %>% inner_join(id1,by=c("time","ID"))
    
[/code]

これで望みの結果になるでしょうか？

