R: создать матрицу зоопарка из CSV-файла - PullRequest
0 голосов
/ 03 июля 2018

Итак, я хотел бы создать матрицу зоопарка из файла CSV, но он не работает. Мой CSV-файл такой, как:

Date,Name
13/02/2015,Austria
07/08/2015,Austria
05/02/2016,Austria
22/07/2016,Austria
05/08/2016,Austria
03/02/2017,Austria
28/07/2017,Austria
26/01/2018,Austria
25/07/2011,Austria
28/10/2011,Austria
25/11/2011,Austria
20/01/2012,Austria
24/02/2012,Austria
26/04/2012,Austria
25/05/2012,Austria
11/07/2012,Austria
17/08/2012,Austria
09/11/2012,Austria
25/04/2013,Austria
29/07/2013,Austria
27/09/2013,Austria
30/09/2013,Austria
23/10/2013,Austria
16/01/2014,Austria
30/01/2014,Austria
21/02/2014,Austria
27/05/2014,Austria
30/07/2014,Austria
15/08/2014,Austria

Я следил за многими объяснениями на форуме, но ничего не работает. Поэтому я решил следовать этим инструкциям . Таким образом, я «создал» следующий код:

> Lines <- "Date,Name
+ 13/02/2015,Austria
+ 07/08/2015,Austria
+ 05/02/2016,Austria
+ 22/07/2016,Austria
+ 05/08/2016,Austria
+ 03/02/2017,Austria
+ 28/07/2017,Austria
+ 26/01/2018,Austria
+ 25/07/2011,Austria
+ 28/10/2011,Austria
+ 25/11/2011,Austria
+ 20/01/2012,Austria
+ 24/02/2012,Austria
+ 26/04/2012,Austria
+ 25/05/2012,Austria
+ 11/07/2012,Austria
+ 17/08/2012,Austria
+ 09/11/2012,Austria
+ 25/04/2013,Austria
+ 29/07/2013,Austria
+ 27/09/2013,Austria
+ 30/09/2013,Austria
+ 23/10/2013,Austria
+ 16/01/2014,Austria
+ 30/01/2014,Austria
+ 21/02/2014,Austria
+ 27/05/2014,Austria
+ 30/07/2014,Austria
+ 15/08/2014,Austria
+ "
> library(zoo)
> read.zoo(text = Lines, header = TRUE, sep = ",", index = c("Date"), split = "Name", format = "d%m%Y", tz = "")  

и я получаю:

Error in read.zoo(text = Lines, header = TRUE, sep = ",", index = c("Date"),  : 
  index has bad entries at data rows: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29

Что мне делать, чтобы решить эту проблему?

Спасибо

Обновление:

Ok!

> df <- read_csv("austriatestfitch.csv", col_types = cols(When = col_date(format = "%d/%m/%Y"))) %>%
+     read.zoo()
> auss1 = df
> str(auss1)
> aus2 = read.csv(file.choose(), header = TRUE)
> str(aus2)
library(eventstudy)
> eventstudy(firm.returns = auss1,
+            event.list = aus2,
+            event.window = 10,
+            is.levels =  FALSE,
+            type = "None",
+            to.remap = TRUE,
+            remap = "cumsum",
+            inference = TRUE,
+            inference.strategy = "bootstrap",
+            model.args = NULL)

и я получаю

Error in eventstudy(firm.returns = auss1, event.list = aus2, event.window = 10,  : 
  firm.returns should be a zoo series with at least one column. Use '[' with 'drop = FALSE'

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

Есть несколько проблем с оператором read.zoo:

  • Вы не можете разделить данные на Name, так как есть только два столбца, поэтому не остается данных для разделения. Вы можете прочитать в столбце Имя как данные, если хотите, и мы сделаем это ниже.
  • нет времени, поэтому Date класса будет достаточно. Это позволит избежать каких-либо сложностей, связанных с часовыми поясами. (Вы можете использовать POSIXct, если действительно хотите, но это не рекомендуется.)
  • аргумент format= указан неверно.

Попробуйте это

read.csv.zoo(text = Lines, format = "%d/%m/%Y")

дает:

2011-07-25 2011-10-28 2011-11-25 2012-01-20 2012-02-24 2012-04-26 2012-05-25 
   Austria    Austria    Austria    Austria    Austria    Austria    Austria 
2012-07-11 2012-08-17 2012-11-09 2013-04-25 2013-07-29 2013-09-27 2013-09-30 
   Austria    Austria    Austria    Austria    Austria    Austria    Austria 
2013-10-23 2014-01-16 2014-01-30 2014-02-21 2014-05-27 2014-07-30 2014-08-15 
   Austria    Austria    Austria    Austria    Austria    Austria    Austria 
2015-02-13 2015-08-07 2016-02-05 2016-07-22 2016-08-05 2017-02-03 2017-07-28 
   Austria    Austria    Austria    Austria    Austria    Austria    Austria 
2018-01-26 
   Austria 

Мы могли бы добавить столбец из 1, скажем, для использования в качестве данных, если вы действительно хотите разделить на Name:

DF <- read.csv(text = lines, as.is = TRUE)
DF$data <- 1
read.zoo(DF, format = "%d/%m/%Y", split = "Name")
0 голосов
/ 04 июля 2018

Предполагая, что ваш CSV называется df.csv, попробуйте:

library(tidyverse)
library(zoo)

df <- read_csv("df.csv", col_types = cols(Date = col_date(format = "%d/%m/%Y"))) %>%
      read.zoo()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...