我有一个包含1465个观测值和1074个变量的数据帧。我正在使用TTR包来计算EMA。问题是我需要为每个1074列计算它。每列都是股票代码。
我可以像这样轻松计算出一个列:
LMA[,63] <- EMA(LMA[,63], 45)
我试图按如下方式计算:
LMA[1:ncol(df)] <- EMA(LMA[1:ncol(df)], 45)
但似乎数据不会作为单独的数据列传递给EMA函数。
如何分别为所有列(股票)计算它?
答案 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)