[R-br] "Unmelt" data frame

Éder Comunello comunello.eder em gmail.com
Quarta Março 30 15:27:03 BRT 2016


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.
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20160330/1cc4ec19/attachment.html>


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