我对 R 非常陌生,所以如果我在解释这个问题时出现任何术语错误,我深表歉意。
我在 csv 文件中有一组每日退货数据,我已设法将其转换为 xts 对象。数据格式为:
HighYield..EUR. MSCI.World..EUR.
2002-01-31 0.0144 0.0031
2002-02-01 0.0056 -0.0132
2002-02-02 0.0373 0.0356
2002-02-03 -0.0167 -0.0644
2002-02-04 -0.0062 -0.0332
2002-02-05 -0.0874 -0.1112
...
我想创建一个脚本,该脚本将找到该月的第一个工作日(从索引中的值范围),然后创建一个新的 xts 对象,其中包含这些返回值。
例如,脚本运行后,我将有一个以下格式的 xts 对象:
HighYield..EUR. MSCI.World..EUR.
2002-01-31 0.0144 0.0031
2002-02-28 0.0011 -0.0112
2002-03-31 0.0222 0.0224
2002-04-30 -0.0333 -0.0223
2002-05-30 -0.0011 -0.0012
2002-06-30 -0.0888 -0.0967
...
有人能帮助我吗?如果可能的话解释一下脚本的每个部分正在做什么。
借助基础 R 语言的强大功能,您可以用一行代码完成此操作:
library(xts)
data(sample_matrix)
x <- as.xts(sample_matrix)
do.call(rbind, lapply(split(x, "months"), first))
解释一下每个步骤的作用:
# Split the xts object into a list with an element for each month.
x1 <- split(x, "months")
# Loop over the list (x1) and call the first() function on each element.
# This returns a new list where each element only contains the first observation
# from each respective element in x1.
x2 <- lapply(x1, first)
# Call rbind() with all the elements of x2 as arguments to rbind()
# Same as rbind(x2[[1]], x2[[2]], ..., x2[[N]])
x3 <- do.call(rbind, x2)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)