Я загрузил исторические данные о погоде Германии, которые в общей сложности хранятся в 1080 txt
файле (исходные данные можно найти на этом ftp: Исторические данные о погоде в Германии), где данные каждой отдельной метеостанции хранятся в соответствующем отдельном файле формата txt
.
Однако в моем исследовательском случае мне нужно только хранить запись данных о погоде между 01-01-1980 ~ 31-12-2014
в каждом файле, где каждый отдельный текстовый файл содержит данные о погоде, которые превышают указанный выше интервал дат (данные о погоде около 100 лет (не непрерывно)). Будет довольно неэффективно и тяжело работать, если я буду редактировать каждый txt
файл вручную и хранить данные о погоде только с 01-01-1980
по 31-12-2014
. Возможно, есть способ редактировать каждый текстовый файл программно, в котором сохраняются только записи данных о погоде, которые соответствуют указанному мной диапазону дат, в то время как остальная часть записи данных должна быть удалена, а файл может быть сохранен с исходным форматом и именем.
Я загрузил все записи данных в формате .txt и загрузил их в свой сеанс R. Я умею их читать. Но программно редактировать и хранить только те записи о погоде, которые мне интересны, мне неизвестны. Как я могу сделать это легко в R? Можно ли это сделать в R?
Вот как выглядят данные:
> head(ClmData_files)
[1] "stella/data/germany_histData/produkt_klima_monat_17190101_20161231_00403.txt"
[2] "stella/data/germany_histData/produkt_klima_monat_17570301_19611130_01425.txt"
[3] "stella/data/germany_histData/produkt_klima_monat_17810101_20161231_02290.txt"
[4] "stella/data/germany_histData/produkt_klima_monat_17880101_20161231_05099.txt"
[5] "stella/data/germany_histData/produkt_klima_monat_17920101_19840731_04927.txt"
[6] "stella/data/germany_histData/produkt_klima_monat_18010101_19531231_03382.txt"
> tail(ClmData_files)
[1] "stella/data/germany_histData/produkt_klima_monat_20110901_20161231_00161.txt"
[2] "stella/data/germany_histData/produkt_klima_monat_20131101_20161231_15207.txt"
[3] "stella/data/germany_histData/produkt_klima_monat_20140901_20161231_15444.txt"
[4] "stella/data/germany_histData/produkt_klima_monat_20150801_20161231_01246.txt"
[5] "stella/data/germany_histData/produkt_klima_monat_20160501_20161231_15555.txt"
[6] "stella/data/germany_histData/produkt_klima_monat_20160901_20161231_01886.txt"
> length(ClmData_files)
[1] 1080
Вот как каждый отдельный текстовый файл выглядит в Notepad++
(только первые 10 строк):
STATIONS_ID;MESS_DATUM_BEGINN;MESS_DATUM_ENDE;QN_4;MO_N;MO_TT;MO_TX;MO_TN;MO_FK;MX_TX;MX_FX;MX_TN;MO_SD_S;QN_6;MO_RR;MX_RS;eor
403;17190101;17190131; 5; -999; 2.8; -999; -999;-999;-999;-999;-999;-999;-999;-999;-999;eor
403;17190201;17190228; 5; -999; 1.1; -999; -999;-999;-999;-999;-999;-999;-999;-999;-999;eor
403;17190301;17190331; 5; -999; 5.2; -999; -999;-999;-999;-999;-999;-999;-999;-999;-999;eor
403;17190401;17190430; 5; -999; 9.0; -999; -999;-999;-999;-999;-999;-999;-999;-999;-999;eor
403;17190501;17190531; 5; -999; 15.1; -999; -999;-999;-999;-999;-999;-999;-999;-999;-999;eor
403;17190601;17190630; 5; -999; 19.0; -999; -999;-999;-999;-999;-999;-999;-999;-999;-999;eor
403;17190701;17190731; 5; -999; 21.4; -999; -999;-999;-999;-999;-999;-999;-999;-999;-999;eor
403;17190801;17190831; 5; -999; 18.8; -999; -999;-999;-999;-999;-999;-999;-999;-999;-999;eor
403;17190901;17190930; 5; -999; 13.9; -999; -999;-999;-999;-999;-999;-999;-999;-999;-999;eor
403;17191001;17191031; 5; -999; 9.0; -999; -999;-999;-999;-999;-999;-999;-999;-999;-999;eor
После того, как я загрузил все данные о погоде с указанного выше ftp-сервера на свой локальный диск и прочитал их в R внизу:
lapply(ClmData_files, function(x) {
read.table(x,
sep="\t",
fill=FALSE,
strip.white=TRUE)
})
Потому что каждый txt
файл содержит данные о погоде за почти 100 лет, но меня интересуют только последние 35 лет, чтобы изучить будущую тенденцию изменения климата с помощью регрессионной модели. Теперь мне нужно получить программный доступ к каждому текстовому файлу, а также отредактировать и отфильтровать записи данных о погоде на основе настроенного интервала дат и сохранить их в текущем сеансе R. Есть ли способ сделать это в динамическом программировании на R? Есть предположения?
Обновление:
нам нужно только работать с MESS_DATUM_BEGINN (begin date);MESS_DATUM_ENDE (end date)
столбцами в каждом файле и сохранять только записи данных о погоде, которые попадают в интервал дат 1980-01-01 ~ 2014-12-31
, и сохранять их в формате csv
, такая операция должна быть применена и распространена на все txt
файл (всего 1080 файлов). Как я могу сделать это программно в R? Любая идея? Спасибо
Обновление 2:
Теперь я могу загрузить все исторические данные о погоде в Германии с помощью пакета rdwd
, вот код, который собирает все данные в сеансе R:
install.packages("rdwd")
library(rdwd)
ftpURL <- selectDWD(name = "", exactmatch = TRUE,
res="monthly",
var="kl", per="historical", current = TRUE)
ftpFile <- dataDWD(file = ftpURL, dir = "stella/input/",sleep = 0)
rowData <- readDWD(ftpFile, fread = FALSE)
Теперь соответствующие исторические данные о погоде доступны на лету: исторические данные о погоде в Германии
mapply
. Внимательно прочтите документацию поread.table
для начала. - person De Novo   schedule 18.03.2018read.table
. - person De Novo   schedule 18.03.2018ftp://ftp-cdc.dwd.de/pub/CDC/observations_germany/climate/monthly/kl/historical/monatswerte_KL_00061_19750701_19780831_hist.zip
не подходит для ваших целей. - person IRTFM   schedule 18.03.2018rdwd
может загружать все исторические данные о погоде. Есть какие-нибудь обновления, чтобы сделать это в R? Спасибо - person Jared   schedule 18.03.2018