我有一个名为 dt 的数据框。dt 看起来像这样。
Year Sale
2009 6
2008 3
2007 4
2006 5
2005 12
2004 3
我有兴趣在过去四年中获得 std.dev 的销售额。如果没有 4 年的数据,比如 2006、2005 和 2004,我想得到 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 的数据。