Удалить NA при использовании "заказа" - PullRequest
5 голосов
/ 10 мая 2011

У меня есть эта огромная матрица данных со столбцами для года, месяца, дня и количества осадков, которые мне нужно заказать, а также удалить строку, когда количество осадков составляет NA (что происходит в день 31 каждого месяца, который имеет только 30 дней и февраль ...). После просмотра файлов справки r я использовал следующий код:

dat<- aa[order(aa$year, aa$month, aa$day, na.last=NA),] 

Он упорядочил мои данные отлично, но у меня все еще есть все НС ... Кто-нибудь может сказать мне, почему это не работает?

спасибо

> head(dat)
    code year month                  station ALTITUD   PROV LONGITUD LATITUD day P1 id
1.1 3059 1940    11 ALBALATE DE LAS NOGUERAS     855 CUENCA   216372  402200   1  0  1
1.2 3059 1940    11 ALBALATE DE LAS NOGUERAS     855 CUENCA   216372  402200   2  0  1
1.3 3059 1940    11 ALBALATE DE LAS NOGUERAS     855 CUENCA   216372  402200   3  0  1
1.4 3059 1940    11 ALBALATE DE LAS NOGUERAS     855 CUENCA   216372  402200   4  0  1
1.5 3059 1940    11 ALBALATE DE LAS NOGUERAS     855 CUENCA   216372  402200   5  0  1
1.6 3059 1940    11 ALBALATE DE LAS NOGUERAS     855 CUENCA   216372  402200   6  0  1

Ответы [ 2 ]

7 голосов
/ 10 мая 2011

Аргумент na.last для order удаляет только NA из объектов, переданных в order через .... Ваши NA находятся в aa$precipitation, а не aa$year, aa$month или aa$day, поэтому вам нужно:

dat <- na.omit(aa[order(aa$year, aa$month, aa$day),])

Возможно, вы захотите использовать класс временных рядов, например zoo или xts, для данных временных рядов.

3 голосов
/ 10 мая 2011

Поскольку na.last должен видеть, должен ли NA быть последним первым при заказе не удалять NA. Используйте na.omit(dat), чтобы удалить NA.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...