2016-12-19 8 views
0

Я вычисление тренда временного ряда растровых данных в отношении времени, но из-NA и нулевых значений я не получаю правильные результаты ..Расчета склона в R после удаления ноля или НС значения

В примере ниже значений дается пиксель. Из-за нулевых значений я получаю значение наклона, как -23.275 вместо 3.897

time Value 
1  289 
2  289 
3  353 
4  305 
5  0 
6  0 
7  385 
8  0 
9  0 
10 305 
11 0 
12 0 
13 0 
14 0 
15 0 

correct form should be like this 

Time Value 
1  289 
2  289 
3  353 
4  305 
7  385 
10 305 

мой пример кода

library(raster) 

setwd("F:\\PHD_work\\Paper_work\\EOS\\New folder") 
eos = stack(list.files(pattern='*.img')) 
time = 1:nlayers(eos) 
f_slope=function(x) { if (is.na(x[1])){ NA } else { m = lm(x ~ time); summary(m)$coefficients[2] }} 
z = calc(eos, f_slope) 
y = writeRaster(z, filename = "slope", format = "HFA") 
+0

так что вы хотели бы иметь вектор с ненулевыми значениями? – mabdrabo

+0

, пожалуйста, поделитесь выходом 'str (eos)' – mabdrabo

+0

, который не смог опубликовать результаты всей str (eos), потому что он очень длинный. –

ответ

0

Данные в S4, чтобы изменить значения в z с помощью @

[email protected]@values <- [email protected]@values[[email protected]@values > 0] 



Но так как это не сказал, что я п Вопрос, я буду держать нормальную фильтрацию также

использованием dplyr

eos <- eos %>% na.omit() %>% filter(Value>0) 

base или

eos <- eos[complete.cases(eos),] 
eos <- eos[eos$Value>0,] 
+0

Получил эту ошибку > eos <- eos %>% na.omit()%> фильтр% (значение> 0) Ошибка в UseMethod ("filter_"): не применимый метод для 'filter_', примененный к объекту класса "c («RasterStack», «Raster», «RasterStackBrick», «BasicRaster») « –

+0

Вот почему я попросил структуру' eos' :) – mabdrabo

+0

было бы проще, если бы вы могли поделиться образцами данных для 'eos' – mabdrabo