Как построить восход солнца за год в R? - PullRequest
2 голосов
/ 22 сентября 2010

У меня есть дата, которая выглядит так:

"date", "sunrise"
2009-01-01, 05:31
2009-01-02, 05:31
2009-01-03, 05:33
2009-01-05, 05:34
....
2009-12-31, 05:29

и я хочу построить это в R, с "date" в качестве оси x и "sunrise" в качестве оси y.

Ответы [ 2 ]

5 голосов
/ 22 сентября 2010

Вам нужно немного поработать, чтобы получить R, чтобы нарисовать подходящий график (то есть получить подходящие оси). Скажем, у меня есть данные, аналогичные вашим (здесь, в CSV-файле для удобства:

"date","sunrise"
2009-01-01,05:31
2009-01-02,05:31
2009-01-03,05:33
2009-01-05,05:34
2009-01-06,05:35
2009-01-07,05:36
2009-01-08,05:37
2009-01-09,05:38
2009-01-10,05:39
2009-01-11,05:40
2009-01-12,05:40
2009-01-13,05:41

Мы можем прочитать данные в форматах и , соответственно, чтобы R знал особый характер данных. Вызов read.csv() включает аргумент colClasses, поэтому R не преобразует дату / время в факторы.

dat <- read.csv("foo.txt", colClasses = "character")
## Now convert the imported data to appropriate types
dat <- within(dat, {
date <- as.Date(date) ## no need for 'format' argument as data in correct format
sunrise <- as.POSIXct(sunrise, format = "%H:%M")
})
str(dat)

Теперь немного хитрее, поскольку R неправильно понимает оси (или, может быть, лучше сказать, что это не то, что мы хотим), если вы просто сделаете

plot(sunrise ~ date, data = dat)
## or
with(dat, plot(date, sunrise))

Первая версия неверно отображает обе оси, а вторая может правильно отправлять данные по датам, поэтому правильная ось x, но метки оси y неверны.

Итак, подавьте построение осей, а затем добавьте их самостоятельно, используя axis.FOO функции, где FOO равно Date или POSIXct:

plot(sunrise ~ date, data = dat, axes = FALSE)
with(dat, axis.POSIXct(x = sunrise, side = 2, format = "%H:%M"))
with(dat, axis.Date(x = date, side = 1))
box() ## complete the plot frame

НТН

1 голос
/ 22 сентября 2010

Я думаю, вы можете использовать функции as.Date и as.POSIXct для преобразования двух столбцов в правильный формат (параметр format для as.POSIXct должен быть установлен на "%H:%M")

Тогда стандартная функция plot должна иметь возможность обрабатывать время и даты сама по себе

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...