[R-br] "Unmelt" data frame

Jefferson Ferreira-Ferreira jecogeo em gmail.com
Quinta Março 31 10:13:31 BRT 2016


Resolvido!!! Muitíssimo obrigado ao Manuel Galdino, que forneceu
importantes dicas e ao Éder Comunello, que forneceu essa solução elegante!!
Aprendi bastante com vocês!
Gratíssimo!

Abraços!

Em 30 de março de 2016 14:27, Éder Comunello <comunello.eder em gmail.com>
escreveu:

> Senhores,
>
> Encaminho uma sugestão, criando um objeto raster para cada subset.
> Alternativamente poderia utilizar um único objeto do tipo RasterBrick ou
> RasterStack.
>
> ### <code r>
> set.seed(124)
> dados <- cbind(y=rep(c(27, 27.5, 28), each=9), x=sample(0:1, 27, rep=T))
> head(dados)
>
> table(dados[,1])
> unique(dados[,1]) # 27.0 27.5 28.0
>
> require(raster)
> sapply(unique(dados[,1]), function(y) {
>      name <- paste0("df.new.", formatC(y, 1, 5, "f", 0))
>      sel  <- dados[dados[,1]==y, 2]
>      assign(name, raster(matrix(sel,3,3,byrow=T)), envir=.GlobalEnv)
> })
>
> ls(patt="df.new") #[1] "df.new.027.0" "df.new.027.5" "df.new.028.0"
>
> ### </code>
>
>> ================================================
> Éder Comunello
> Agronomist (UEM), MSc in Environ. Sciences (UEM)
> DSc in Agricultural Systems Engineering (USP/Esalq)
> Brazilian Agricultural Research Corporation (Embrapa)
> Dourados, MS, Brazil |<O>|
> ================================================
> GEO, -22.2752, -54.8182, 408m
> UTC-04:00 / DST: UTC-03:00
>
>
>
>
> Em 30 de março de 2016 09:40, Manoel Galdino <mcz.fea em gmail.com> escreveu:
>
>> o 1:9 é indexado pelo valor de y, certo?
>> Vê se assim funciona
>>
>> # vamor primeiro criar um índice pro seu loop
>> # para isso vou pegar 1:9 (y == 27), depois 10:18 (para y == 27.5) etc. e
>> colocar numa lista
>>
>> df$index <- 1:nrow(df)
>> index <- list()
>> vec <- unique(df$y)
>> for ( i in 1:length(vec)) {
>> index[[i]] <- df$index[vec[i]]
>> }
>>
>> # agora crio uma lista que vai armazenar o resultado de raster (.)
>> df.new <- list()
>>
>> # faz um loop. Resultado é um lista dew data frames.
>> for (i in unique(df$y)){
>>   df.new.[[i]] <- raster(matrix(df$x[each 43248 rows],204,212,byrow=T))}
>>
>> ## se quiser depois juntar os data.frames, use rbind
>>
>> ps.: não testei no R. Se você mandar um código que cria o df com y e x e
>> em qual biblioteca está função raster posso testar aqui se funciona e
>> ajustar caso tenha algum erro (bem possível).
>>
>> ps.:2: se funciona, me avise que coloco como respsota no SO.
>>
>> abcs
>> Manoel
>>
>> 2016-03-29 18:19 GMT-03:00 Jefferson Ferreira-Ferreira <jecogeo em gmail.com
>> >:
>>
>>> Olá Manoel, obrigado pela tua mensagem.
>>>
>>> Dados raster são imagens que contêm a descrição de cada pixel, em
>>> oposição aos vetores. Grossamente, pode-se dizer que é um "mapa" onde cada
>>> pixel representa um valor. No meu caso, valores binários (0,1) sobre
>>> presença/ausência de um fenômeno qualquer.
>>>
>>> Levemos em consideração o exemplo que dei no stackoverflow (
>>> http://stackoverflow.com/questions/36271393/r-unmelt-a-melted-dataframe-back-to-original-dimensions
>>> ):
>>>
>>> > df
>>>           y    x
>>>         1 27   1
>>>         2 27   1
>>>         3 27   0
>>>         4 27   1
>>>         5 27   0
>>>         6 27   0
>>>         7 27   0
>>>         8 27   1
>>>         9 27   1
>>>        10 27.5 1
>>>        11 27.5 1
>>>        12 27.5 0
>>>        13 27.5 1
>>>        14 27.5 0
>>>        15 27.5 0
>>>        16 27.5 0
>>>        17 27.5 1
>>>        18 27.5 1
>>>
>>> O resultado que preciso são objetos (do tipo raster), um para cada valor
>>> de y, com dimensões, digamos aqui, 3x3.
>>> Eu sei que posso atingir esse resultado através de r1 <- raster(matrix(
>>> df$x[1:9],3,3,byrow=T)).
>>> O caso é que eu precisaria de algo mais automatizado, que me separasse,
>>> a cada 9 linhas (nesse exemplo), um objeto cujo nome fosse df.new.(valor de
>>> y correspondente).
>>> Espero ter conseguido ser claro. Se ficar em dúvida ainda, e puder
>>> ajudar, escreva ou dê uma olhada no post
>>> <http://stackoverflow.com/questions/36271393/r-unmelt-a-melted-dataframe-back-to-original-dimensions>
>>> .
>>>
>>> Obtrigado e um abraços
>>>
>>>
>>>
>>>
>>> Em 29 de março de 2016 17:01, Manoel Galdino <mcz.fea em gmail.com>
>>> escreveu:
>>>
>>>> O que você quer dizer por raster? Eu não entendi direito o que você
>>>> quer. Você quer uma lista com 23 objetos?
>>>> Dê um exemplo reproduzível menor, digamos com y assumindo dois valores,
>>>> e qual seria o output neste caso particular.
>>>>
>>>> abcs,
>>>> Manoel
>>>>
>>>> 2016-03-29 17:52 GMT-03:00 Jefferson Ferreira-Ferreira <
>>>> jecogeo em gmail.com>:
>>>>
>>>>> Pessoal, estou com uma questão aberta no stackoverflow. Se alguém
>>>>> puder ajudar, eu ficaria muito grato!
>>>>>
>>>>>
>>>>> http://stackoverflow.com/questions/36271393/r-unmelt-a-melted-dataframe-back-to-original-dimensions
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>>
>>>>> *Jefferson Ferreira-Ferreira*
>>>>>
>>>>> Geógrafo – GEOPROCESSAMENTO IDSM | Coordenadoria de TI
>>>>>
>>>>>
>>>>> Jefferson.ferreira em mamiraua.org.br
>>>>>
>>>>> *Instituto de Desenvolvimento Sustentável Mamirauá*
>>>>>
>>>>> Ministério da Ciência, Tecnologia e Inovação
>>>>>
>>>>> Telefone: +55 97 3343-9710
>>>>>
>>>>> *Google Maps* - Mapas deste e-mail:
>>>>>
>>>>> Exibir mapa ampliado
>>>>> <https://maps.google.com.br/maps?q=-3.355557,-64.731151&ll=-3.355471,-64.731145&spn=0.004632,0.006968&num=1&t=h&z=18>
>>>>>
>>>>>
>>>>> *Contatos particulares:*
>>>>> *(55) 9615-0100 <%2855%29%209615-0100>*
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> R-br mailing list
>>>>> R-br em 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.
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Manoel Galdino
>>>> https://sites.google.com/site/galdinomcz/
>>>>
>>>> _______________________________________________
>>>> R-br mailing list
>>>> R-br em 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.
>>>>
>>>
>>>
>>>
>>> --
>>>
>>> *Jefferson Ferreira-Ferreira*
>>>
>>> Geógrafo – GEOPROCESSAMENTO IDSM | Coordenadoria de TI
>>>
>>>
>>> Jefferson.ferreira em mamiraua.org.br
>>>
>>> *Instituto de Desenvolvimento Sustentável Mamirauá*
>>>
>>> Ministério da Ciência, Tecnologia e Inovação
>>>
>>> Telefone: +55 97 3343-9710
>>>
>>> *Google Maps* - Mapas deste e-mail:
>>>
>>> Exibir mapa ampliado
>>> <https://maps.google.com.br/maps?q=-3.355557,-64.731151&ll=-3.355471,-64.731145&spn=0.004632,0.006968&num=1&t=h&z=18>
>>>
>>>
>>> *Contatos particulares:*
>>> *(55) 9615-0100 <%2855%29%209615-0100>*
>>>
>>>
>>> _______________________________________________
>>> R-br mailing list
>>> R-br em 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.
>>>
>>
>>
>>
>> --
>> Manoel Galdino
>> https://sites.google.com/site/galdinomcz/
>>
>> _______________________________________________
>> R-br mailing list
>> R-br em 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 em 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.
>



-- 

*Jefferson Ferreira-Ferreira*

Geógrafo – GEOPROCESSAMENTO IDSM | Coordenadoria de TI


Jefferson.ferreira em mamiraua.org.br

*Instituto de Desenvolvimento Sustentável Mamirauá*

Ministério da Ciência, Tecnologia e Inovação

Telefone: +55 97 3343-9710

*Google Maps* - Mapas deste e-mail:

Exibir mapa ampliado
<https://maps.google.com.br/maps?q=-3.355557,-64.731151&ll=-3.355471,-64.731145&spn=0.004632,0.006968&num=1&t=h&z=18>


*Contatos particulares:*
*(55) 9615-0100*
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20160331/bf184032/attachment.html>


Mais detalhes sobre a lista de discussão R-br