Чтение файла ASC в R

В настоящее время я пытаюсь извлечь информацию из различных файлов «ASC» в R, чтобы выполнить анализ данных.

Проблема в том, что я не уверен, как именно читать файлы. Я попытался использовать стандартные функции read.table, но все числа были одинаковыми (-9999,00). Чтобы исключить возможность повреждения данных, я прочитал другой файл ASC и получил те же результаты. Единственное, что я знаю точно, это то, что размер файла между ними абсолютно одинаковый.

В любом случае я могу прочитать эти файлы? Любой пакет R, на который я могу взглянуть?

Я связал это:

    x = read.table("Dropbox/MVZ/aet2009sep.asc")
    y = read.table("Dropbox/MVZ/aet2009oct.asc")

и мои выходы были

    > head(x, n =20)
         V1        V2
    1         ncols    3486.0
    2         nrows    4477.0
    3     xllcorner -374495.8
    4     yllcorner -616153.3
    5      cellsize     270.0
    6  NODATA_value   -9999.0
    7      -9999.00   -9999.0
    8      -9999.00   -9999.0
    9      -9999.00   -9999.0
    10     -9999.00   -9999.0
    11     -9999.00   -9999.0
    12     -9999.00   -9999.0
    13     -9999.00   -9999.0
    14     -9999.00   -9999.0
    15     -9999.00   -9999.0
    16     -9999.00   -9999.0
    17     -9999.00   -9999.0
    18     -9999.00   -9999.0
    19     -9999.00   -9999.0
    20     -9999.00   -9999.0

    head(y, n =20)
         V1        V2
    1         ncols    3486.0
    2         nrows    4477.0
    3     xllcorner -374495.8
    4     yllcorner -616153.3
    5      cellsize     270.0
    6  NODATA_value   -9999.0
    7      -9999.00   -9999.0
    8      -9999.00   -9999.0
    9      -9999.00   -9999.0
    10     -9999.00   -9999.0
    11     -9999.00   -9999.0
    12     -9999.00   -9999.0
    13     -9999.00   -9999.0
    14     -9999.00   -9999.0
    15     -9999.00   -9999.0
    16     -9999.00   -9999.0
    17     -9999.00   -9999.0
    18     -9999.00   -9999.0
    19     -9999.00   -9999.0
    20     -9999.00   -9999.0

person arifyali    schedule 24.11.2013    source источник
comment
Вы не можете ожидать, что мы узнаем, какие ошибки произошли, если вы не предоставите имена пакетов или код.   -  person IRTFM    schedule 24.11.2013
comment
Вы должны включить содержимое необработанного файла. Я, например, понятия не имею, что такое файл .asc и как он выглядит.   -  person Thomas    schedule 24.11.2013


Ответы (4)


Обновление: можно читать файлы .asc (также известные как ESRI файлы ASCII Raster) с помощью функции raster непосредственно из пакета 'raster'. Справка говорит:

Если x является именем файла, распознаются следующие дополнительные переменные:

Родной: логический. Значение по умолчанию — FALSE, за исключением случаев, когда пакет rgdal отсутствует. Если TRUE, чтение и запись ... и файлов Arc ASCII выполняется с помощью собственных драйверов (растровых пакетов), а не через rgdal....

library(raster)
r = raster("C:\\...\\Dropbox/MVZ/aet2009sep.asc")
plot(r)

Редактировать 2 [устарело]:

Альтернативой является функция raster() с правильно установленным пакетом rgdal.

library(rgdal)
r = raster("C:\\...\\Dropbox/MVZ/aet2009sep.asc")
plot(r)

Редактировать 1 [устарело]:

Пакет adehabitat устарел. В настоящее время он выдает предупреждение при загрузке:

Использовать его опасно, так как баги уже не исправятся. Теперь рекомендуется использовать пакеты adehabitatMA, adehabitatLT, adehabitatHR и adehabitatHS.
...

Оригинальный ответ [устаревший]:

Используйте функцию import.asc из пакета R adehabitat (см. стр. 92). :

library(adehabitat)
asc = import.asc("C:\\...\\Dropbox/MVZ/aet2009sep.asc")

#plot asc object.
library(raster)
r = raster(asc)
plot(r)
person Andre Silva    schedule 24.11.2013
comment
@Stophface, обновленный ответ. Спасибо за ответ. - person Andre Silva; 08.05.2016

Пакет SDMTools имеет функцию read.asc, которая работает под R 3.2. 4. Однако, по крайней мере, в моем случае использование read.table со всеми значениями по умолчанию сработало из коробки.

person Waldir Leoncio    schedule 14.04.2016

Используйте пакет Laf, он безумно быстр.

person ssword    schedule 29.03.2018

Я использовал команду x =read.csv("C:\...\Dropbox/MVZ//aet2009sep.asc", sep=";")

Я обнаружил это после импорта вручную с помощью кнопки импорта в окне "Среда".

person Gerardo Nunez    schedule 24.04.2017