2017-02-19 17 views
2

У меня есть следующая проблема. Я хотел бы использовать следующий код, чтобы выбрать определенный период времени для ежедневных данных, например, этот:Выбор периода времени с окном в R; формат "dd/mm/yyyy h: m: s" (Windows 7)

window(Modellwind.zoo, start = as.Date("01/Jan/2001 12:00:00"), end = as.Date("4/Jan/2001 12:00:00")) 

Я получаю следующее сообщение об ошибке: Ошибка в charToDate (х): символьная строка не в стандартный формат однозначна

Когда я пытался найти приемлемый формат времени с функцией anydate, оно не работает либо:

library(anytime) 
anydate("01/Jan/2001 12:00:00") 

Используя следующий код:

window(Modellwind.zoo, start = as.Date("2001-01-01"), end = as.Date("2001-01-04")) 

К сожалению, я получаю следующее сообщение об ошибке:

**Warning messages: 
    1: In which(in.index & all.indexes >= start & all.indexes <= end) : 
    Incompatible methods ("Ops.dates", "Ops.Date") for ">=" 
    2: In which(in.index & all.indexes >= start & all.indexes <= end) : 
    Incompatible methods ("Ops.dates", "Ops.Date") for "<="** 

Следующий код включает в себя образец Modellwind.zoo.

structure(c(9.08093655399134, 6.51590181162631, 7.14637946155745, 
1.43900253813098, 6.78880326680026, 14.3182887821646, 16.3360242476697, 
16.1781018622214, 17.2200845065928, 15.6439142273171, 8.10504553259712, 
3.78898221928137, 6.78608582121557, 7.18116948778303, 5.0299974451978, 
3.49148782050232, 6.9941692218925, 8.45512766287497, 12.0693672354131, 
11.987955907515, 10.3290912344961, 13.4506307038479, 21.7989491163794, 
14.0085737502259, 14.5883127217965, 11.8048508250059, 24.7915690531695, 
19.151192329502, 12.1739793389357, 11.9410486288817, 20.9967608089789, 
15.2111025271479, 5.90129944159158, 2.42733488656831, 7.20743282263504, 
22.737089035552, 14.8219437253637, 14.0558804343021, 8.98137356225915, 
12.9592918632241, 18.4870237580719, 9.11790624009415, 2.27721679625411, 
2.61125956054424, 3.26998407545227, 5.35392572192135, 4.95193258824599, 
6.86224460928498, 9.06594694653957, 12.4505570716657, 12.740653858499, 
15.8771799446521, 12.5618618366812, 3.58848453998801, 10.9966305297934, 
4.86674413518877, 10.7031531327265, 16.2043681264107, 12.0587344974091, 
2.10949588086561), index = structure(c(18659.5, 18660.5, 18661.5, 
18662.5, 18663.5, 18664.5, 18665.5, 18666.5, 18667.5, 18668.5, 
18669.5, 18670.5, 18671.5, 18672.5, 18673.5, 18674.5, 18675.5, 
18676.5, 18677.5, 18678.5, 18679.5, 18680.5, 18681.5, 18682.5, 
18683.5, 18684.5, 18685.5, 18686.5, 18687.5, 18688.5, 18689.5, 
18690.5, 18691.5, 18692.5, 18693.5, 18694.5, 18695.5, 18696.5, 
18697.5, 18698.5, 18699.5, 18700.5, 18701.5, 18702.5, 18703.5, 
18704.5, 18705.5, 18706.5, 18707.5, 18708.5, 18709.5, 18710.5, 
18711.5, 18712.5, 18713.5, 18714.5, 18715.5, 18716.5, 18717.5, 
18718.5), .Dim = 60L, format = structure(c("dd/mm/yyyy", "h:m:s" 
), .Names = c("dates", "times")), origin = c(12L, 1L, 1949L), class = c("chron", 
"dates", "times")), class = "zoo") 
+0

Дата в объекте вашего зоопарка не отформатирована должным образом. Вы можете проверить это с помощью функций зоопарка - 'time()', 'start()' и 'end()'. В настоящее время он возвращает число, подобное 18659.5. Можете ли вы поделиться необработанными данными, то есть перед преобразованием в объект зоопарка. –

+0

@ KarthikArumugham: это потому, что индекс 'chron' и у вас нет пакета' chron', поэтому метод 'print.chron' не зарегистрирован. –

+0

@JoshuaUlrich Спасибо. Раньше этого не знал. –

ответ

3

Индекс Modellwind.zoo является chron. Вот почему ваши попытки подмножества на Date не удались (ваша первая попытка не получается, потому что as.Date ожидает формат %Y-%m-%d). Либо изменить индекс Date прежде чем подмножество на Date:

Modellwind.zoo.Date <- Modellwind.zoo 
index(Modellwind.zoo.Date) <- as.Date(index(Modellwind.zoo.Date)) 
window(Modellwind.zoo.Date, start = as.Date("2001-01-01"), end = as.Date("2001-01-04")) 
# 2001-01-01 2001-01-02 2001-01-03 2001-01-04 
# 9.080937 6.515902 7.146379 1.43900 

Или оставить индекс как chron и подмножество по chron объектов. Обратите внимание, что происхождение вашего индекса chron в Modellwind.zoo составляет 1949-12-01, а не по умолчанию хронологическое происхождение 1990-01-01, поэтому вам нужно указать его, чтобы избежать предупреждения о неправильно совпадающих источниках.

beg.chron <- as.chron("01/01/2001", origin = c(12, 1, 1949)) 
end.chron <- as.chron("01/04/2001", origin = c(12, 1, 1949)) 
window(Modellwind.zoo, start = beg.chron, end = end.chron) 
# (01/Jan/2001 12:00:00) (02/Jan/2001 12:00:00) (03/Jan/2001 12:00:00) 
#    9.080937    6.515902    7.146379 
+0

Спасибо большое! Не знал, что так легко изменить Индекс. – Nucore