- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在一个文件夹中有多个文件,我通过以下方式读取这些文件:
files <- list.files( "PATH", pattern = '*csv' , full.names = TRUE)
(length(files))
for( i in length(files) ) {
df <- fread(files[i], header = TRUE, sep = ";",stringsAsFactors=FALSE)
}
我知道我正在一次又一次地覆盖 df
对象。我想要实现的是:
我想将我的数据格式化为这个示例数据:
> (str(StockPriceReturns))
'zoo' series from 2000-04-03 to 2013-03-28
Data: num [1:3246, 1:30] NA NA NA NA NA NA NA NA NA NA ...
- attr(*, "dimnames")=List of 2
..$ : NULL
..$ : chr [1:30] "Bajaj.Auto" "BHEL" "Bharti.Airtel" "Cipla" ...
Index: Date[1:3246], format: "2000-04-03" "2000-04-04" "2000-04-05" "2000-04-06" ...
NULL
> (head(StockPriceReturns))
Bajaj.Auto BHEL Bharti.Airtel Cipla Coal.India Dr.Reddy
2000-04-03 NA 4.9171044 NA 6.810041 NA -3.2541653
2000-04-04 NA -8.3348496 NA -3.368606 NA -8.3353739
2000-04-05 NA 0.3305788 NA 0.836825 NA 0.2616345
2000-04-06 NA -2.7605266 NA -2.466056 NA -1.8941289
2000-04-07 NA 3.2543548 NA 7.690426 NA 7.6961041
2000-04-10 NA 3.3107586 NA 6.154276 NA 6.4769648
目前我的数据实际上是这样的:
> (dput(head(df1,10)))
structure(list(Name = c("C-QUADRAT INVESTMENT", "C-QUADRAT INVESTMENT",
"C-QUADRAT INVESTMENT", "C-QUADRAT INVESTMENT", "C-QUADRAT INVESTMENT",
"C-QUADRAT INVESTMENT", "C-QUADRAT INVESTMENT", "C-QUADRAT INVESTMENT",
"C-QUADRAT INVESTMENT", "C-QUADRAT INVESTMENT"), Date = c("01.01.2002",
"02.01.2002", "03.01.2002", "04.01.2002", "07.01.2002", "08.01.2002",
"09.01.2002", "10.01.2002", "11.01.2002", "14.01.2002"), Price = c("na",
"na", "na", "na", "na", "na", "na", "na", "na", "na"), Currency = c("E",
"E", "E", "E", "E", "E", "E", "E", "E", "E"), CDax = c("-0,260460226",
"-1,827437365", "-0,814370143", "0,861279951", "-0,339133689",
"-1,034650372", "0,713336597", "0,52727784", "2,893518519", "0,05790388"
), `Total Price Returns` = c("na", "na", "na", "na", "na", "na",
"na", "na", "na", "na"), AbnormalReturns = c("na", "na", "na",
"na", "na", "na", "na", "na", "na", "na")), .Names = c("Name",
"Date", "Price", "Currency", "CDax", "Total Price Returns", "AbnormalReturns"
), class = c("data.table", "data.frame"), row.names = c(NA, -10L
), .internal.selfref = <pointer: 0x00000000002a0788>)
Name Date Price Currency CDax
1: C-QUADRAT INVESTMENT 01.01.2002 na E -0,260460226
2: C-QUADRAT INVESTMENT 02.01.2002 na E -1,827437365
3: C-QUADRAT INVESTMENT 03.01.2002 na E -0,814370143
4: C-QUADRAT INVESTMENT 04.01.2002 na E 0,861279951
5: C-QUADRAT INVESTMENT 07.01.2002 na E -0,339133689
6: C-QUADRAT INVESTMENT 08.01.2002 na E -1,034650372
7: C-QUADRAT INVESTMENT 09.01.2002 na E 0,713336597
8: C-QUADRAT INVESTMENT 10.01.2002 na E 0,52727784
9: C-QUADRAT INVESTMENT 11.01.2002 na E 2,893518519
10: C-QUADRAT INVESTMENT 14.01.2002 na E 0,05790388
Total Price Returns AbnormalReturns
1: na na
2: na na
3: na na
4: na na
5: na na
6: na na
7: na na
8: na na
9: na na
10: na na
我可以针对单变量情况执行此操作,我只是将我的 data.frame
转换为 zoo
对象,然后将此对象转换为 xts
具有此功能的对象:
dfToZoo <- function(df) {
require(zoo)
date <- as.Date(df[, 1], format = '%d.%m.%Y')
#TODO have a look if the column are rightly named
with(df, zoo(TotalReturns, date))
}
但是对于多变量情况如何做到这一点?
最佳答案
一种可能性是使用 read.zoo
读取您的数据并使用 split
参数 reshape 它。
# some data
df <- data.frame(Date = 20140101 + 0:2,
Name = rep(c("Bajaj.Auto", "BHEL", "Bharti.Airtel"), each = 3),
CDAX = rnorm(9))
df
# Date Name CDAX
# 1 20140101 Bajaj.Auto 0.4020118
# 2 20140102 Bajaj.Auto -0.7317482
# 3 20140103 Bajaj.Auto 0.8303732
# 4 20140101 BHEL -1.2080828
# 5 20140102 BHEL -1.0479844
# 6 20140103 BHEL 1.4411577
# 7 20140101 Bharti.Airtel -1.0158475
# 8 20140102 Bharti.Airtel 0.4119747
# 9 20140103 Bharti.Airtel -0.3810761
# convert to zoo object. Use 'split' to reshape, and 'format' date if necessary.
z <- read.zoo(file = df, format = "%Y%m%d", split = "Name")
str(z)
# ‘zoo’ series from 2002-01-01 to 2002-01-04
# Data: num [1:4, 1:3] 2.308 0.1058 0.457 -0.0772 1.0274 ...
# - attr(*, "dimnames")=List of 2
# ..$ : NULL
# ..$ : chr [1:3] "Bajaj.Auto" "Bharti.Airtel" "BHEL"
# Index: Date[1:4], format: "2002-01-01" "2002-01-02" "2002-01-03" "2002-01-04"
z
# Bajaj.Auto Bharti.Airtel BHEL
# 2014-01-01 0.4020118 -1.0158475 -1.208083
# 2014-01-02 -0.7317482 0.4119747 -1.047984
# 2014-01-03 0.8303732 -0.3810761 1.441158
关于r - 创建具有多列的 xts 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20937211/
我如何使用 apply 系列函数,比如 apply.daily到多元 XTS? 例如: 时间,a,b ... 2012-02-11 16:21:24 4.7258 7.7258 2012-02-11
我有一个 xts 对象列表,这些对象具有共同的索引和列名。 我想按索引进行 rbind 并对列进行平均: dts = seq.POSIXt(from = Sys.time() - days(2), t
我正在使用 xts 时间序列在 R 中工作。 我有什么: 具有不等间隔时间步长的时间序列数据集。 我想得到什么: 具有等距时间步长的时间序列,其值对应于与时间步长重叠的原始值的比例(请参见下面的示例)
this = structure(c(-0.012, -0.028, -0.044, -0.033, -0.039, -0.042), .Dim = c(3L, 2L), .Dimnames
在 xts 对象中是否有一种方法可以执行与下面相同的操作,但对于具有多天盘中数据的 xts 对象?下面的工作就像一个时钟,但一天的数据。如果我从 22 日到 26 日通过 xts,它不会。似乎不可能一
library(xts) set.seed(1) x = xts( cbind(a=1:10,b=20:11) , Sys.Date()+1:10 ) y = xts( runif(10) , Sys
con = gzcon(url('http://www.systematicportfolio.com/sit.gz', 'rb')) source(con) close(con) load.pack
我有一个 list 。列表由 5 个 xts 对象组成。每个对象由 5 个 xts 系列组成。每个系列包含 183 个观察值。我想从所有这些系列中提取一个公共(public)系列。我要减去的系列名为
在将 rowSums 传递给 xts 对象时,是否可以保留 xts 对象的索引? 目前,我将结果重新转换为 xts 对象,但是如果 rowSums 能够简单地返回它的内容,这似乎并没有那么快已通过。
首先让我说一下,我看了一下 ?xts,意识到这是一个与时区相关的问题,似乎已经解决了,但我不明白为什么 它正在发生。所以:我有一个简单的价格数据数据框。当我将它转换为 xts 对象时,xts 对象的第
当我尝试执行以下工作时发生错误: # generate random integrals # data <- xts(floor(runif(100, 1,101)),as.Date("1973-02
这是输出: library(tseries) # for adf.test function adf.test(data) Augmented Dickey-Fuller Test data: da
如何删除 xts 图右上角的日期范围?例如,在下面 xts 图的右上角,我想删除文本“2007-01-02/2007-06-30”。 library(xts) data(sample_matrix)
我有一个不规则的时间序列并且正在使用 xts的 endpoints 获取我的时间序列的每小时索引。 endpoints(data, on="hours") 我正在使用它以这种方式计算每小时 perio
申请 split函数到 xts对象来自 weeks将行分组为每周块。组中的默认天数是 Monday至 Sunday .想要群里的天数来自Sunday怎么办?至 Saturday ? library(x
我在删除 xts 对象中的重复行时遇到问题。我有一个 R 脚本,它将下载货币的刻度财务数据并将其转换为 OHLC 格式的 xts 对象。该脚本还会每 15 分钟提取一次新数据。新数据从今天的第一笔交易
我真的很难在这里找到解决方案。如果您查看最后一行代码,您会明白我想在下次开盘时买入并在 5 天后卖出 (x = 5)。 问题是 xts 索引正在计算周末。因此,例如,您会在 7 月 12 日星期五获得
我有 3 个 xts 对象,它们的标记都是“日期”对象: > a a 1995-01-03 1.76 1995-01-04 1.69
我正在尝试按天比较不同的时间序列。 目前典型的 XTS 对象如下所示: > vwap.crs QUANTITY QUANTITY.1 2014-03-03 13
我在列表中有一些数据,如下所示: > y $ABMD.Rank ABMD.Rank $ATVI.Rank ATVI.Rank $ADBE.Rank ADBE.Rank $
我是一名优秀的程序员,十分优秀!