dt というデータ フレームがあります。dtはこんな感じ。
Year Sale
2009 6
2008 3
2007 4
2006 5
2005 12
2004 3
過去 4 年間の売上の std.dev を取得することに関心があります。2006、2005、2004 のように 4 年のデータがない場合は、NA を取得したいと考えています。各年に対応する値で新しい列を作成するにはどうすればよいですか。新しいデータは次のようになります。
Year Sale std.
2009 6 std(05,06,07,08)
2008 3 std(07,06,05,04)
2007 4 NA
2006 5 NA
2005 12 NA
2004 3 NA
私はこれをたくさん試しましたが、私はRの初心者であるため、できませんでした。誰か助けてください。ありがとう。
編集:GVKEYを使用したデータは次のとおりです。
GVKEY FYEAR IBC
1 1004 2003 3.504
2 1004 2004 18.572
3 1004 2005 35.163
4 1004 2006 59.447
5 1004 2007 75.745
よろしく
編集:
前述の関数 rollapply 関数を次のように使用しています。
dt <- ddply(dt, .(GVKEY), function(x){x$ww <- rollapply(x$Sale,4,sd, fill =NA, align="right"); x});
しかし、次のエラーが発生します。
Error in seq.default(start.at, NROW(data), by = by) : wrong sign in 'by' argument
私が間違っているのかわかりません。GVKEY を含むデータは上部に記載されています。