计算data.frame中的差异

时间:2015-07-27 09:42:46

标签: r

我试图从data.frame的价格计算回报。

diff((na.locf(precos_mes))

有些列有NAs作为值,所以要删除它们我使用locf函数,但是当我对它应用diff时,它会返回以下错误:

(list) object cannot be coerced to type 'double'

当我尝试取消列表时,我会丢失每个库存载体中的所有信息。

diff(as.numeric(unlist(na.locf(prices))))

1 个答案:

答案 0 :(得分:2)

尝试

 lapply(precos_mes, function(x) diff(na.locf(x)))

或者,如果您不需要删除开头的NA

 sapply(precos_mes, function(x) diff(na.locf(x, na.rm=FALSE)))

数据

 set.seed(24)
 precos_mes <- as.data.frame(matrix(sample(c(NA,0:4), 20*5,
              replace=TRUE), ncol=5))