2016-10-26 9 views
0

の次の行からの値が被写体の取得私は次の形式でデータを持っている:Rのデータフレーム:基準

quotes <- read.csv(text = " 
id,ts,origin,product,bid,ask,nextts 
1,2016-10-18 20:20:54.733,SourceA,Dow,1.09812,1.0982, 
2,2016-10-18 20:20:55.093,SourceA,Ftse,7010.5,7011.5, 
3,2016-10-18 20:20:55.149,SourceA,Dow,18159.0,18161.0, 
4,2016-10-18 20:20:55.871,SourceA,Ftse,18159.0,18161.0,") 

がどのようにソースである次の行のTSの値を持つ列「nextts」を取り込むことができ同じ製品は同じですか?基本的には、データをそれ自体に結合して(同じ製品とソースであることを前提として)、tsの値をキャプチャしますか?

次の回答が見つかりましたが、これは基準なしの厳密なリード/ラグです。

Return next row in a dataframe R

+0

のデータがどのように私たちに簡単にそれを作ると 'dput(引用符を)'掲載について、非常に読みやすいではありません。 –

答えて

2

まずここかread.csvas.is=TRUE引数を使用することによって示されているようtsが明示的に変換することにより、文字やPOSIXctではなく、要因であることを確認してください。次に、表示された機能と一緒にaveを使用して、グループごとに移動します。

与える
quotes$ts <- as.character(quotes$ts) 
transform(quotes, nextts = ave(ts, origin, product, FUN = function(x) c(x[-1], NA))) 

id      ts origin product   bid  ask     nextts 
1 1 2016-10-18 20:20:54.733 SourceA  Dow  1.09812  1.0982 2016-10-18 20:20:55.149 
2 2 2016-10-18 20:20:55.093 SourceA Ftse 7010.50000 7011.5000 2016-10-18 20:20:55.871 
3 3 2016-10-18 20:20:55.149 SourceA  Dow 18159.00000 18161.0000      <NA> 
4 4 2016-10-18 20:20:55.871 SourceA Ftse 18159.00000 18161.0000      <NA> 
関連する問題