如何计算多列数据?

时间:2015-08-13 11:52:08

标签: r

我有一个包含1465个观测值和1074个变量的数据帧。我正在使用TTR包来计算EMA。问题是我需要为每个1074列计算它。每列都是股票代码。

我可以像这样轻松计算出一个列:

LMA[,63] <- EMA(LMA[,63], 45)

我试图按如下方式计算:

LMA[1:ncol(df)] <- EMA(LMA[1:ncol(df)], 45)  

但似乎数据不会作为单独的数据列传递给EMA函数。

如何分别为所有列(股票)计算它?

2 个答案:

答案 0 :(得分:1)

您可以通过以下方式使用apply,假设数据框的库存代码为df,并且它只有数字变量。

library(TTR)
LMA <- apply(df, 2, FUN = EMA, n = 45)

这将返回一个与df相同大小的数组,并应用EMA

答案 1 :(得分:1)

如果是data.frame,我们可以使用lapply来遍历列

library(TTR)
LMA[] <- lapply(LMA, EMA, n=45)

使用?EMA中的示例,我正在使用data(ttrc)值更改EMA中的第2列到第5列

data(ttrc)
ttrc[2:5] <- lapply(ttrc[2:5], EMA, n=45)