我有2个动物园时间序列对象和一个基础数据框。我正在尝试使用这些功能。
library("zoo")
z1就是
z1 <- structure(c(400L, 125L, 125L, 125L, 120L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L), .Dim = c(5L, 3L), .Dimnames = list(NULL, c("MSFT", "MSFTCALL44", "MSFTPUT44"
)), index = structure(c(15723, 15725, 15726, 15727, 15728), class = "Date"),
class = "zoo")
MSFT MSFTCALL44 MSFTPUT44
2013-01-18 400 0 0
2013-01-20 125 0 0
2013-01-21 125 0 0
2013-01-22 125 0 0
2013-01-23 120 0 0
z2是
z2 <- structure(c(0.04, 0.02, 0.03, 0.02, 0.03, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L), .Dim = c(5L, 3L), .Dimnames = list(NULL, c("MSFT", "MSFTCALL44", "MSFTPUT44"
)), index = structure(c(15723, 15725, 15726, 15727, 15728), class = "Date"),
class = "zoo")
MSFT MSFTCALL44 MSFTPUT44
2013-01-18 0.04 0 0
2013-01-20 0.02 0 0
2013-01-21 0.03 0 0
2013-01-22 0.02 0 0
2013-01-23 0.03 0 0
df是
l <- "Symbol, Underlying, TimeToMaturity, CP, Strike
MSFTCALL44, MSFT, 0.1, call,44
MSFTPUT55, MSFT, 0.1, put,44"
i <- read.csv(text = l)
Symbol Underlying TimeToMaturity CP Strike
1 MSFTCALL44 MSFT 0.1 call 44
2 MSFTPUT55 MSFT 0.1 put 44
我想在每个单元格中应用此公式
z1 []&lt; - apply(MyFunc(df $ CP,df $ Underlying,df $ Strike,df $ maturity,z2 [match for symbol]))
更新
我相信使用rollapply或apply会完成任务,但我是R的新手,并且对两个不同的动物园对象和数据框架上的rollapply也不熟悉。
输出:
MSFT MSFTCALL44 MSFTPUT44
2013-01-18 400 MyFunc(400,"call",0.04,44) MyFunc(400,"put",0.04,44)
2013-01-20 125 MyFunc(125,"call",0.02,44) MyFunc(125,"put",0.02,44)
2013-01-21 125 MyFunc(125,"call",0.03,44) MyFunc(125,"put",0.03,44)
2013-01-22 125 MyFunc(125,"call",0.02,44) MyFunc(125,"put",0.02,44)
2013-01-23 120 MyFunc(120,"call",0.03,44) MyFunc(120,"put",0.03,44)
像这样。