Olá Cesar e Elias, Obrigada pela atenção. Vou dar uma olhada no pacote spatstat.
Cesar, respondo em linha: As coordenadas do grid e vento múltiplas de 0,5 grau deveriam "se corresponder" ou não? Sim, mas não como os dados estão agora. Por exemplo, entre as latitudes de vento de -10.875 e -10.625 a correspondência no grid seria -10.8 e -10.7. Entre -10.625 e -10.375 as correspondências seriam -10.6, -10.5 e -10.4. Não sei como automatizar estre processo, pois veja que para as latitudes de vento que terminam com "75" eu tenho duas correspondências e para as que terminam em "25" eu tenho três. Me fiz entender? Aqui vai um dput() dos dados para você ter uma noção: dput(vento[1:30, ]) structure(list(lat = c(-23.875, -23.625, -23.375, -23.125, -22.875, -22.625, -22.375, -22.125, -21.875, -21.625, -21.375, -21.125, -20.875, -20.625, -20.375, -20.125, -19.875, -19.625, -19.375, -19.125, -18.875, -18.625, -18.375, -18.125, -17.875, -17.625, -17.375, -17.125, -16.875, -16.625), lon = c(-42.875, -42.875, -42.875, -42.875, -42.875, -42.875, -42.875, -42.875, -42.875, -42.875, -42.875, -42.875, -42.875, -42.875, -42.875, -42.875, -42.875, -42.875, -42.875, -42.875, -42.875, -42.875, -42.875, -42.875, -42.875, -42.875, -42.875, -42.875, -42.875, -42.875 ), media = c(6.16, 5.99714285714286, 5.91857142857143, 5.82, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA)), .Names = c("lat", "lon", "media"), row.names = c(NA, 30L), class = "data.frame") dput(grid[1:30, ]) structure(list(lat = c(-10.4, -10.4, -10.5, -10.5, -10.6, -10.6, -10.6, -10.5, -10.5, -10.6, -10.7, -10.7, -10.7, -10.7, -10.8, -10.8, -10.8, -10.9, -10.9, -10.9, -10.8, -10.8, -10.9, -11, -11, -11, -10.8, -10.9, -10.9, -11), lon = c(-36.4, -36.3, -36.5, -36.3, -36.5, -36.4, -36.3, -36.6, -36.4, -36.6, -36.6, -36.5, -36.4, -36.3, -36.6, -36.5, -36.4, -36.6, -36.5, -36.4, -37, -36.9, -36.9, -37.1, -37, -36.9, -36.8, -37, -36.8, -36.8)), .Names = c("lat", "lon"), row.names = c(NA, 30L), class = "data.frame") A questão de você interpolar os valores de vento tem menos a ver com o R em si e mais com o domínio do problema que você trabalha: qual é a forma de interpolar o valor do vento para uma coordenada intermediária entre pontos que você tenha as medidas? Talvez seja mais apropriado trabalhar com "a quase metade dos dados" do que utilizar o dobro de pontos sendo que a outra metade será resultado de um processo de cálculo e portanto não deveria modificar sua análise dos dados. Também acho que a interpolação é o menos importante para fins de análises, e posso manter NAs para isso. Porém, tenho que gerar um levelplot() desta e de outras variáveis, por isso gostaria de usar a interpolação para este fim. Pensei em usar thin plate splines ou qualquer outro interpolador bivariado em termos de latitude e longitude. Obrigada pela ajuda. Saudações, Heloise 2017-09-07 0:08 GMT+12:00 Cesar Rabak <cesar.ra...@gmail.com>: > Heloise, > > Esta observação me deixa confuso: > > #Quando faço um merge() dos dois dataframes, obviamente meus valores de >> #vento$media aparecem como NA pois não há nenhuma correspondência entre >> as #coordenadas do grid e de vento. > > > As coordenadas do grid e vento múltiplas de 0,5 grau deveriam "se > corresponder" ou não? > > A questão de você interpolar os valores de vento tem menos a ver com o R > em si e mais com o domínio do problema que você trabalha: qual é a forma de > interpolar o valor do vento para uma coordenada intermediária entre pontos > que você tenha as medidas? > > Talvez seja mais apropriado trabalhar com "a quase metade dos dados" do > que utilizar o dobro de pontos sendo que a outra metade será resultado de > um processo de cálculo e portanto não deveria modificar sua análise dos > dados. > > HTH > -- > Cesar Rabak > > > 2017-09-06 4:47 GMT-03:00 Heloíse Pavanato via R-br < > r-br@listas.c3sl.ufpr.br>: > >> Colegas do R-br, >> >> >> >> Tenho a seguinte questão: >> >> >> >> Estou trabalhando com um grid de 0.1 x 0.1 grau de latitude e longitude >> onde quero inserir a variável vento. No entanto a resolução do vento é >> de 0.25 x 0.25 graus. >> >> Os dados estão armazenados aqui: >> >> >> http://www.datafilehost.com/d/693635d4 >> >> http://www.datafilehost.com/d/ee24730c >> >> >> vento <- read.csv('ascat.data.csv', header = TRUE) >> >> str(vento) >> >> grid <- read.csv('grid.data.csv', header = TRUE) >> >> str(grid) >> >> >> #Quando faço um merge() dos dois dataframes, obviamente meus valores de >> #vento$media aparecem como NA pois não há nenhuma correspondência entre >> as #coordenadas do grid e de vento. >> >> >> dmerge <- merge(grid, vento, by = c('lon', 'lat'), all.x = TRUE) >> >> >> Porém, eu gostaria de obter valores de vento, por exemplo, entre latitudes >> de -22.625 e -22.375 na mesma escala do grid: -22.6, -22.5, -22.4, etc. >> E o mesmo para longitude. >> >> >> Tentei utilizar a scales::rescale(), mas consegui mudar apenas os >> mínimos e máximos das coordenadas: >> >> >> #install.packages('scales', dependencies = TRUE) >> >> library(scales) >> >> >> vento$lon.r <- rescale(vento$lon, to = range(grid$lon)) >> vento$lon.r >> >> >> vento$lat.r <- rescale(vento$lat, to = range(grid$lat)) >> vento$lat.r >> >> >> Então, creio que eu tenho dois problemas: o primeiro é obter as >> coordenadas de vento na mesma escala que as do grid; segundo é interpolar >> vento$media para substituir os NAs, que correspondem a quase metade do >> total de valores. >> >> >> Agradeço se algum colega tiver alguma dica. >> >> >> Obrigada, >> >> Heloise. >> >> _______________________________________________ >> R-br mailing list >> R-br@listas.c3sl.ufpr.br >> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br >> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça >> código mínimo reproduzível. >> > >
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forne�a c�digo m�nimo reproduz�vel.