23 мар. 2013 г.

Даты

Обработка дат в R кажется не вполне тривиальным занятием, но при ближайшем знакомстве выглядит несложной. Итак, есть массив в несколько тысяч записей (назовём его massive), одна переменная (пусть она называется date) которого — даты соответствующих наблюдений в привычном формате день.месяц.год (напр., 12.12.2012). Стоит задача рассортировать все наблюдения по месяцам.

Сначала преобразуем нашу переменную в формат даты:

massive$date.new = as.Date(massive$date,'%d.%m.%Y')

Обратите внимание на параметр формата %d.%m.%Y — мы указываем машине, что наши исходные даты представлены в виде день.месяц (цифрами, а не словами).год (полностью), при этом разделителем выступает точка. Если бы год был в сокращённом виде (двумя цифрами, без столетия), то вместо прописной %Y следовало бы поставить строчную %y.

Полученная переменная date.new пригодна для календарных вычислений. Возможно ли напрямую из неё извлечь месяцы, я пока не знаю, поэтому мы воспользовались кружным путём:

massive$date.sort=strtrim(format(massive$date.new,'%Y-%m-%d'),7)

Иными словами, сначала дату мы преобразуем в строки типа 2012-12-12 командой format(), после чего из каждой такой строки отсекаем первые семь символов (т. е. 2012-12) командой strtrim() и записываем полученное в новую переменную, которая и будет сортировать наши наблюдения.

Комментариев нет: