如何将data.frame表转换为xts对象

如何将data.frame表转换为xts对象,r,performanceanalytics,R,Performanceanalytics,我将汤森路透数据流中的价格数据下载到excel中,并创建了一个csv文件。生成的csv文件是data.frame对象。我已经使用as.date函数将日期列设置为date。结果表是一个包含42列的data.frame,第一列是date列,另41列是不同公司的价格数据。价格数据的类别是“数值”。 该表如下所示: date TickerA TickerB TickerC 1 2000-01-03 20 NA

我将汤森路透数据流中的价格数据下载到excel中,并创建了一个csv文件。生成的csv文件是data.frame对象。我已经使用
as.date
函数将日期列设置为
date
。结果表是一个包含42列的
data.frame
,第一列是
date
列,另41列是不同公司的价格数据。价格数据的类别是
“数值”
。 该表如下所示:

       date           TickerA      TickerB      TickerC
    1  2000-01-03       20           NA            40
    2  2000-01-04       21           33            42
    3  2000-01-05       22           32            NA
    4  .
    5  .
    6  .
      date           TickerA     TickerB     TickerC
   1  2000-01-03       NA          NA          NA
   2  2000-01-04      0.049        NA         0.049
   3  2000-01-05      0.047      -0.031        NA
   4   .
   5   .
   6   .
test <- read.csv("data.csv")
date <- as.Date(test$Date, format = "%m/%d/%Y")
data <- cbind(date, test[,-1]) 
请注意,一些价格缺失,因为一些公司在观察期内破产或成立较晚。现在,我想使用PerformanceAnalytics包中的Return.calculate函数,该函数将价格表转换为收益表,如下所示:

       date           TickerA      TickerB      TickerC
    1  2000-01-03       20           NA            40
    2  2000-01-04       21           33            42
    3  2000-01-05       22           32            NA
    4  .
    5  .
    6  .
      date           TickerA     TickerB     TickerC
   1  2000-01-03       NA          NA          NA
   2  2000-01-04      0.049        NA         0.049
   3  2000-01-05      0.047      -0.031        NA
   4   .
   5   .
   6   .
test <- read.csv("data.csv")
date <- as.Date(test$Date, format = "%m/%d/%Y")
data <- cbind(date, test[,-1]) 
到目前为止,代码如下所示:

       date           TickerA      TickerB      TickerC
    1  2000-01-03       20           NA            40
    2  2000-01-04       21           33            42
    3  2000-01-05       22           32            NA
    4  .
    5  .
    6  .
      date           TickerA     TickerB     TickerC
   1  2000-01-03       NA          NA          NA
   2  2000-01-04      0.049        NA         0.049
   3  2000-01-05      0.047      -0.031        NA
   4   .
   5   .
   6   .
test <- read.csv("data.csv")
date <- as.Date(test$Date, format = "%m/%d/%Y")
data <- cbind(date, test[,-1]) 

我不明白这一点,因为我的日期列是类型
date
,价格列是类型
numeric
。简言之,我认为如果我可以将表转换为xts对象,我的问题就可以解决。有人知道桌子有什么问题吗?我非常感谢每一个提示,有一个好提示:)

假设您所拥有的是这些工作末尾的注释:

library(xts)

# 1
z <- read.csv.zoo("data.csv", format = "%m/%d/%Y")
x <- as.xts(z)

# 2    
DF <- read.csv("data.csv")
z <- read.zoo(DF, format = "%m/%d/%Y")
x <- as.xts(z)

# Calculate returns

library(PerformanceAnalytics)

Return.calculate(x, method = 'log')
##               TickerA     TickerB    TickerC
## 2000-01-03         NA          NA         NA
## 2000-01-04 0.04879016          NA 0.04879016
## 2000-01-05 0.04652002 -0.03077166         NA
库(xts)
# 1

z您是否检查了
日期中的日期转换谢谢,根据R,其中有134个NA。然而,当我翻阅这张桌子时,我找不到任何东西。日期的格式字符串似乎是正确的,在excel和原始csv文件中,日期类似于2000年1月3日。应用as.Date函数后,它是2000-01-03。检查
test$Date
。2000年1月3日不明确-它也可能是2000年3月1日,因此您的格式字符串可能应该是
%d/%m/%Y
?将
test$date
中的字符串值与您的csv文件进行比较可能是值得的。非常感谢,#2为我工作。数据现在是“xts”“zoo”格式。不幸的是,现在的价格也是“xts”“zoo”和Return.calculate无法计算任何东西。如果数据采用注释中假定的格式,这两种方法都应该有效。我已经修改了假定的格式。第一个明显更紧凑。再次感谢您的帮助,我非常感谢您的时间:)。我发现在excel文件中,观察结果中有些价格超过1000美元。意外地,格式是这样的:$1145.32,这促使R在本列中使用因子。在我将格式更改为1145.32美元后,它在1和2上运行得非常好。祝你过得愉快;)