在rollmean函数(动物园包)上,
SP_stock$mean_vol_260<-ave(as.numeric(SP_stock$vol), SP_stock$ID, FUN=function(x) rollmean(x,k=260, na.pad=T, align="right"))
我有一个错误说:
Error : k <= n is not TRUE
因为我的某些ID没有足够的价值(260)。
我想设置一个条件来仅对$ vol上至少有260个值的ID执行rollmean功能。
如果可能的话,尽可能多地使用rollmean函数,对另一个值最多260。
非常感谢。
答案 0 :(得分:2)
只需设置k = min(NROW(x), 260)
:
SP_stock$mean_vol_260 <- ave(as.numeric(SP_stock$vol), SP_stock$ID,
FUN=function(x) rollmeanr(x, k=min(NROW(x), 260), na.pad=TRUE))