我有一个关于命令图()的问题.
有没有办法完全消除x轴并用自己的值替换它?我知道我可以通过这样做摆脱轴
plot(x,y, xaxt = 'n')
Run Code Online (Sandbox Code Playgroud)
然后添加一个轴
axis(side = 1 etc.)
Run Code Online (Sandbox Code Playgroud)
但是,当我添加轴时,显然它仍然指的是绘制为'x'的数据.我只想绘制'y'值并添加我自己的x轴,只需"绘制"x轴并指定自己的值.有没有办法做到这一点?
这个问题的背景是我的两个数据框的长度不同,因此我无法绘制它们.
我想计算曲线下面积来进行积分而不定义像in这样的函数integrate().
我的数据看起来像这样:
Date Strike Volatility
2003-01-01 20 0.2
2003-01-01 30 0.3
2003-01-01 40 0.4
etc.
Run Code Online (Sandbox Code Playgroud)
我试图plot(strike, volatility)看看波动性微笑.有没有办法整合这个绘制的"曲线"?
我正试图获得一段时间的回报,以便在特定时间内持有某项资产.
我的数据框看起来像这样:
Date Price
1998-01-01 20
1998-01-02 22
1998-01-03 21
1998-01-04 25
...
1998-01-20 25
1998-01-21 19
1998-01-21 20
....
1998-02-01 30
1998-02-02 28
1998-02-03 25
1998-02-04 26
etc.
Run Code Online (Sandbox Code Playgroud)
我每天都有1次观察,我的时间序列从1998年到1999年.
我现在要做的是计算持有我的资产20天的回报(即在第一天购买并在第20天出售),并且每天都这样做.所以我想计算一下:
1.day:返回(20天)= log(价格(t = 20)/价格(t = 0)),
2.day:返回(20天)= log(价格(t = 21)/价格(t = 1)),
3.day:返回(20天)= log(价格(t = 22)/价格(t = 2))
等,即在我的样本中每天都这样做.
所以,我的结果数据框看起来像这样:
Date Return
1998-01-01 0.2
1998-01-02 0.4
1998-01-03 0.6
1998-01-04 0.1
...
1998-01-20 0.1
1998-01-21 0.2
1998-01-21 0.5
....
1998-02-01 0.1
1998-02-02 0.2
1998-02-03 0.5
1998-02-04 0.01
etc.
Run Code Online (Sandbox Code Playgroud)
在R中有没有办法说:取前20个观察值,计算回报.观察2-21,计算回报.观察3-22,计算回报等?
我完全陷入困境,并希望得到一些帮助.谢谢!达尼
我有4个数据框,其中包含日期列,价格列和返回列.
data.1:
Date Price Return
2009-01-02 100 0.2
2009-01-03 110 0.1
etc.
Run Code Online (Sandbox Code Playgroud)
data.2:
Date Price Return
2009-02-02 60 0.15
2009-02-03 50 -0.1
etc.
Run Code Online (Sandbox Code Playgroud)
我想设置一个循环并将函数density()应用于每个数据框,返回返回的密度值.
我通过创建一个列表,设置一个循环并使用lapply()来做到这一点,所以
> ff <- list(data.1, data.2, data.3, data.4)
> for(i in 1:length(ff){
density[[i]] <- lapply(ff, density(ff[[i]]$Return))}
Run Code Online (Sandbox Code Playgroud)
但这显然不起作用.有人可以给我一些帮助吗?
在此先感谢 - Dani
我有一个像这样的数据框“foo”
Date Return
1998-01-01 0.02
1998-01-02 0.04
1998-01-03 -0.02
1998-01-04 -0.01
1998-01-05 0.02
...
1998-02-01 0.1
1998-02-02 -0.2
1998-02-03 -0.1
etc.
Run Code Online (Sandbox Code Playgroud)
我想在这个数据框中添加一个新列,显示相应回报的密度值。我试过:
foo$density <- for(i in 1:length(foo$Return)) density(foo$Return,
from = foo$Return[i], to = foo$Return[i], n = 1)$y
Run Code Online (Sandbox Code Playgroud)
但它没有用。我真的很难将“函数”应用于每一行。但也许还有另一种方法可以做到,而不是使用密度()?
我本质上想做的是将密度()中的拟合密度值提取到 foo 中的返回值。如果我只是做 plot(density(foo$Return)) 它会给我曲线,但是我希望将密度值附加到回报上。
@乔里斯:
foo$density <- density(foo$Return, n=nrow(foo$Return))$y
Run Code Online (Sandbox Code Playgroud)
计算一些东西,但似乎返回错误的密度值。
谢谢你帮我解决!达尼
我有以下问题:
我有一个数据框"测试"看起来或多或少像这样:
Date return price vol
20100902 0.3 15 8.5
20100902 0.4 17 8.6
20100902 0.6 19 8.7
.....
20100903 0.2 13 8.2
20100903 0.4 17 8.6
20100903 0.8 21 9.0
.....
Run Code Online (Sandbox Code Playgroud)
所以我给出了每个日期的值(每天10个).我现在要做的是在每个日期应用ksmooth(),例如每个日期的ksmooth(return,price,n.points = 50).这应该给我每个日期50个观察.另外,我想要插值的时间戳.所以结果框架应该如此
Date return price
20100620 0.3 15
20100620 0.31 15.2
20100620 0.32 15.3
20100620 0.4 17
20100620 0.6 19
.....
20100621 0.2 13
20100621 0.21 13.1
20100621 0.22 13.2
20100621 0.4 17
20100621 0.8 21
etc.
Run Code Online (Sandbox Code Playgroud)
每天50次观察.所以这就是我要寻找的:取前10个观测值(例如,日期1 = 20102006,插值并在插值上设置时间戳(20100620).然后,进行第二次10次观测(日期= 20100621),插值和在插值(20100621)上加上时间戳,依此类推.
我对R很新,但这就是我的尝试.我想过使用zoo()函数.在实现任何内容之前,我想让我的日期条目独一无二,所以我只是为每个条目添加了几个小时
test <- read.zoo("test.txt", format = …Run Code Online (Sandbox Code Playgroud)