Раскодировка данных гидромета

Вопросы по статистическому пакету R. Не обязательно гео.
Ответить
ymr3R9Jge
Активный участник
Сообщения: 115
Зарегистрирован: 31 окт 2011, 00:18
Репутация: 13
Откуда: Кривий Ріг

Раскодировка данных гидромета

Сообщение ymr3R9Jge » 23 май 2016, 10:44

Здравствуйте. Посоветуйте, пожалуйста метод приведения массива к нормальному дата-фрейму с помощью R.
Это данные измерений загрязнения воздуха. Они закодированы в виде пятисимвольных последовательностей. Внутри строк закодированные значения разделены пробелами. Вначале каждой строки идёт номер поста, потом - день месяца (месяц и год хранятся отдельно в заголовке файла), затем - время отбора проб воздуха (08ШШШ). Потом в строке следуют содержания разных загрязнителей. В самом конце строки идёт два закодированных значения о метеоусловиях(+0700 и 12010). В каждой строке количество записей различается.
Я думаю - следует каждую пятисисмольную последовательность разобрать по маске и вытянуть оттуда собственно значения величин. Но как реализовать запись значений в конкретные столбцы конечного дата-фрейма?

Код: Выделить всё

07017 08ШШШ 01002 02009 04002 05007 08001 10001 19002 +0700 12010 ::
07013 13ШШШ 08002 10001 19002 :: +1100 12090 ::
07017 20ШШШ 01004 02029 04004 05008 08002 10003 19004 +1260 00000 ::
07025 01ШШШ 02027 05014 08002 10002 19003 :: +0600 18033 ::
07027 08ШШШ 01002 02004 04004 05010 08002 10002 19004 +0080 18018 ::
07023 13ШШШ 08001 10001 19003 :: +0870 20040 ::
07011 08ШШШ 22015 :: ::
07011 20ШШШ 22010 :: ::
07021 08ШШШ 22006 :: ::
06015 01ШШШ 02010 05003 08000 10000 19001 :: +0780 18060 ::
06017 07ШШШ 01002 02014 04004 05007 08000 10000 19002 +0770 18010 ::
06013 13ШШШ 08000 10000 19003 :: +1820 18090 ::

nickleb
Гуру
Сообщения: 835
Зарегистрирован: 22 май 2010, 20:20
Репутация: 92

Re: Раскодировка данных гидромета

Сообщение nickleb » 02 июн 2016, 08:28

Здравствуйте. А двоеточия в строках - это?... А в строках 7,8.9 - нет данных о метеоусловиях? Кол.-во колонок в каждой строке - одинаковое? - по разделителям, м.б., идентифицируется одинаковым количеством?
Раскодировку можно организовать через именованные вектора: www.r-tutor.com/r-introduction/vector/n ... or-members
- как один из вариантов... Вот для пунктов наблюдений в Вашем примере как-то так:

Код: Выделить всё

#Именованный вектор пунктов наблюдений:
PostCodeNames <- c("07010"="SmlPost", 
                   "07020"="MedPost",  
                   "07030"="BigPost")
#Пример раскодировки пункта наблюдения с 5-символьным кодом  пункта наблюдения:
print(PostCodeNames["07020"])
Если ещё актуально - то выложите пару-тройку файлов, с которыми Вам надо отработать - тогда можно будет попробовать их в один dataframe считать (посредством иль read.table(), иль read.csv(), иль ...) первым столбцом - имя файла сделать и столбец даты сформировать, скажем, по функции ISOdate(YYYY,MM,DD) ...

Ответить

Вернуться в «R»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя