Начиная с даты R графики и анализа с помощью объекта Matrix? - PullRequest
1 голос
/ 05 июня 2011

Я хочу построить данные как временной ряд (ежеквартально), но график продолжает обрабатывать даты как данные, а не как метки или время?

Попытка сделать мое первоначальное упражнение очень простым (есть более сложные вещи, с которыми можно справиться, это было бы легко с Excel или даже с GDocs!) Я читаю очень маленькую таблицу из csv (используя read.csv) как

Это дисплей для Corl (мои данные в r)

    Date Survey Actual
1 2011-06-30     60     NA
2 2011-03-31     55     50
3 2010-12-31     48     44
4 2010-09-30     48     36
5 2010-06-30     56     75
6 2010-03-31     57     41

Я пытался конвертировать в дату, используя Corl $ Date <- as.Date (Corl $ Date), но без разницы. </p>

Я использовал и plot (Corl), и plot.ts (Corl)

Затем я захочу выполнить корреляцию и автокорреляцию, но мне кажется, что мне не хватает базового понятия для структуры данных?

Я также пытался инвертировать столбцы и строки,

      V1         V2         V3         V4         V5         V6
1   Date 2010-03-31 2010-06-30 2010-09-30 2010-12-31 2011-03-31
2 Survey         57         56         48         48         55
3 Actual         41         75         36         44         50
      V7
1 2011-06-30
2         60
3           

dput(Corl)
structure(list(Date = structure(c(15155, 15064, 14974, 14882, 
14790, 14699), class = "Date"), Survey = c(60L, 55L, 48L, 48L, 
56L, 57L), Actual = c(NA, 50L, 44L, 36L, 75L, 41L)), .Names = c("Date", 
"Survey", "Actual"), row.names = c(NA, -6L), class = "data.frame")

Сюжет следующим образом: BadChart Plot

1 Ответ

1 голос
/ 05 июня 2011

Из вывода dput(Corl) нам не нужно гадать, как значения Date хранятся в Corl. Как вы можете видеть ниже, даты хранятся как class = "Date". Это делает это довольно легко.

library(zoo)

Corl <- structure(list(Date = structure(c(15155, 15064, 14974, 14882,
  14790, 14699), class = "Date"), Survey = c(60L, 55L, 48L, 48L,
    56L, 57L), Actual = c(NA, 50L, 44L, 36L, 75L, 41L)), .Names = c("Date",
      "Survey", "Actual"), row.names = c(NA, -6L), class = "data.frame")

Corl.zoo <- read.zoo(Corl, FUN=as.yearqtr)
Corl.zoo

        Survey Actual
2010 Q1     57     41
2010 Q2     56     75
2010 Q3     48     36
2010 Q4     48     44
2011 Q1     55     50
2011 Q2     60     NA

plot(Corl.zoo)

enter image description here

Изменить 1 ================================================== =========

Прежде чем спросить, вот способ добавить вертикальные линии сетки и больше меток по оси x. Все, что я сделал, это изменил пример кода внизу следующей ссылки:

http://rss.acs.unt.edu/Rdoc/library/zoo/html/plot.zoo.html

my.panel <- function(...) {
   lines(...)
   #This line adds the vertical grid lines
   abline(v=time(Corl.zoo), col="lightgray", lty=3)
   panel.number <- parent.frame()$panel.number
   # if bottom panel
   if (!length(panel.number) || panel.number == NCOL(Corl.zoo)) {
      # next line only if non-labelled ticks wanted for each point
      axis(1, at = time(Corl.zoo), lab = FALSE)
      labcou <- 1 #Put a label, counting between labels
      ix <- seq(1, length(Corl.zoo), labcou)
      labs <- format(time(Corl.zoo), "%Y\nQ%q\n ")
      axis(1, at = time(Corl.zoo)[ix], lab = labs[ix], tcl = -0.5, padj=0.6, cex.axis = 1)
   }
}

plot(Corl.zoo, panel = my.panel, xaxt = "n", main="My Title", xlab="")

enter image description here

...