[R-br] RES: Criar uma coluna de lancamentos de pesca

Humberto Hazin hhazin em gmail.com
Quinta Maio 19 13:05:43 BRT 2016


Boa tarde Eder,

 

Mais uma vez agradeço pela disposição. Segue o link dos dados via dropbox

 

https://www.dropbox.com/s/zulr5a9m44sv2s4/dt.mapas.csv?dl=0

 

 

Humberto

 

De: ecomunel em gmail.com [mailto:ecomunel em gmail.com] Em nome de Éder Comunello
Enviada em: quinta-feira, 19 de maio de 2016 08:28
Para: Humberto Hazin <hhazin em gmail.com>
Cc: r-br em listas.c3sl.ufpr.br
Assunto: Re: [R-br] Criar uma coluna de lancamentos de pesca

 

Humberto, bom dia!

 

Nesse caso você precisaria fornecer teus dados ou uma amostra deles. Selecione uma amostra dos teus dados e verifique se o problema se repete com eles. Se a amostra for pequena, pode colar a saída do comando dput(seudataframe) diretamente no corpo do email. 




​

================================================
É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 18 de maio de 2016 15:09, Humberto Hazin <hhazin em gmail.com <mailto:hhazin em gmail.com> > escreveu:

Ola Eder,

 

Obrigado pela dica realmente tinha 132 linhas repetidas. Entretanto, apareceu outro problema. Ele so esta fazendo para o primeiro barco apenas e não para os demais. Tens alguma ideia do que seja? No teu script com os dados que vc criou roda perfeitamente.

 

Humberto

 

De: ecomunel em gmail.com <mailto:ecomunel em gmail.com>  [mailto:ecomunel em gmail.com <mailto:ecomunel em gmail.com> ] Em nome de Éder Comunello
Enviada em: quinta-feira, 12 de maio de 2016 17:12


Para: Humberto Hazin <hhazin em gmail.com <mailto:hhazin em gmail.com> >
Cc: r-br em listas.c3sl.ufpr.br <mailto:r-br em listas.c3sl.ufpr.br> 
Assunto: Re: [R-br] Criar uma coluna de lancamentos de pesca

 

Humberto,

 

É provável que seja uma linha (ou mais) em duplicidade para os 4 campos: boat, ano, mes e dia.

?duplicated




​

================================================
É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 12 de maio de 2016 10:09, Humberto Hazin <hhazin em gmail.com <mailto:hhazin em gmail.com> > escreveu:

Bom dia Eder,

 

Muito obrigado pela ajuda acredito que funcionara agora. Rodei teu exemplo e deu certo, porém quando rodei nos meus dados acusou um erro. Eu vou verificar o que esse erro. De toda forma, muito obrigado!

 

Error in `[<-.data.frame`(`*tmp*`, sel[ord], "lance", value = c(1L, 0L : replacement has 2 rows, data has 75201

 

 

Humberto

 

 

De: ecomunel em gmail.com <mailto:ecomunel em gmail.com>  [mailto:ecomunel em gmail.com <mailto:ecomunel em gmail.com> ] Em nome de Éder Comunello
Enviada em: quinta-feira, 12 de maio de 2016 08:23


Para: Humberto Hazin <hhazin em gmail.com <mailto:hhazin em gmail.com> >
Cc: r-br em listas.c3sl.ufpr.br <mailto:r-br em listas.c3sl.ufpr.br> 
Assunto: Re: [R-br] Criar uma coluna de lancamentos de pesca

 

Humberto, bom dia!

 

Era para o script fazer isso mesmo, porque até então não havia presumido que precisaria reiniciar a contagem com a mudança do ano. Fiz outra alteração no script para atender esse critério.

 

Via de regra, deve-se evitar aninhar instruções "for", mas acho que pode te servir como ponto de partida. Outros colegas da lista poderão te propor soluções mais elegantes...

 

### <code r>

df <- read.table(text=

"dia mes  ano  boat 

13   1    2005 AGIOS.NIKOLAUS 

10   1    2005 AGIOS.NIKOLAUS 

11   1    2005 AGIOS.NIKOLAUS 

12   1    2005 AGIOS.NIKOLAUS 

9    1    2005 AGIOS.NIKOLAUS

10   1    2005 X    

9    1    2005 X    

12   1    2005 X    

13   1    2005 Y    

11   1    2005 Y

13   1    2006 Y    

11   1    2006 Y", head=T, as.is <http://as.is> =T)

 

df$lance <- NA

df

 

for (boat in unique(df$boat)) {

     for (ano in unique(df$ano)) {

     sel <- which(df$boat==boat & df$ano==ano)

     ord <- with(df[sel,], order(dia, mes, ano))

     df[sel[ord], "lance"] <- 1:length(sel)

     }

}

 

df

#    dia mes  ano           boat lance

# 1   13   1 2005 AGIOS.NIKOLAUS     5

# 2   10   1 2005 AGIOS.NIKOLAUS     2

# 3   11   1 2005 AGIOS.NIKOLAUS     3

# 4   12   1 2005 AGIOS.NIKOLAUS     4

# 5    9   1 2005 AGIOS.NIKOLAUS     1

# 6   10   1 2005              X     2

# 7    9   1 2005              X     1

# 8   12   1 2005              X     3

# 9   13   1 2005              Y     2

# 10  11   1 2005              Y     1

# 11  13   1 2006              Y     2

# 12  11   1 2006              Y     1

### </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 11 de maio de 2016 19:17, Humberto Hazin <hhazin em gmail.com <mailto:hhazin em gmail.com> > escreveu:

Ola eder,

 

Mais uma vez obrigado e desculpa te incomodar de novo o problema é que esta um pouco estranho e diferente do teu resultado. Segue abaixo a partir do ponto amarelo deveria repetir 1 2 3...e não 16 17....

 

      set.day setyear setmonth      boat lance

20404      14    1999       12 ACECHADOR     1

20422      15    1999       12 ACECHADOR     2

20403      17    1999       12 ACECHADOR     3

20467      18    1999       12 ACECHADOR     4

20466      19    1999       12 ACECHADOR     5

20465      20    1999       12 ACECHADOR     6

20473      21    1999       12 ACECHADOR     7

20469      22    1999       12 ACECHADOR     8

20468      23    1999       12 ACECHADOR     9

20475      25    1999       12 ACECHADOR    10

20470      26    1999       12 ACECHADOR    11

20471      27    1999       12 ACECHADOR    12

20472      28    1999       12 ACECHADOR    13

20474      29    1999       12 ACECHADOR    14

20476      30    1999       12 ACECHADOR    15

26605       7    2000        1 ACECHADOR    16

26592       8    2000        1 ACECHADOR    17

26601       9    2000        1 ACECHADOR    18

26603      10    2000        1 ACECHADOR    19

26589      11    2000        1 ACECHADOR    20

25991      12    2000        1 ACECHADOR    21

 

 

De: ecomunel em gmail.com <mailto:ecomunel em gmail.com>  [mailto:ecomunel em gmail.com <mailto:ecomunel em gmail.com> ] Em nome de Éder Comunello
Enviada em: quarta-feira, 11 de maio de 2016 18:48
Para: Humberto Hazin <hhazin em gmail.com <mailto:hhazin em gmail.com> >
Cc: r-br em listas.c3sl.ufpr.br <mailto:r-br em listas.c3sl.ufpr.br> 


Assunto: Re: [R-br] Criar uma coluna de lancamentos de pesca

 

Humberto,

 

Você poderia ordenar o banco antes de rodar: df <- df[with(df, order(boat, ano, mes, dia)),]

 

Ou modificar o código. Uma possibilidade:

 

 

### <code r>

df <- read.table(text=

"dia mes  ano  boat 

13   1    2005 AGIOS.NIKOLAUS 

10   1    2005 AGIOS.NIKOLAUS 

11   1    2005 AGIOS.NIKOLAUS 

12   1    2005 AGIOS.NIKOLAUS 

9    1    2005 AGIOS.NIKOLAUS

10   1    2005 X    

9    1    2005 X    

12   1    2005 X    

13   1    2005 Y    

11   1    2005 Y", head=T, as.is <http://as.is> =T)

 

df$lance <- NA

df

 

for (boat in unique(df$boat)) {

     sel <- which(df$boat==boat)

     ord <- with(df[sel,], order(dia, mes, ano))

     df[sel[ord], "lance"] <- 1:length(sel)

}

 

df

#    dia mes  ano           boat lance

# 1   13   1 2005 AGIOS.NIKOLAUS     5

# 2   10   1 2005 AGIOS.NIKOLAUS     2

# 3   11   1 2005 AGIOS.NIKOLAUS     3

# 4   12   1 2005 AGIOS.NIKOLAUS     4

# 5    9   1 2005 AGIOS.NIKOLAUS     1

# 6   10   1 2005              X     2

# 7    9   1 2005              X     1

# 8   12   1 2005              X     3

# 9   13   1 2005              Y     2

# 10  11   1 2005              Y     1

### </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 11 de maio de 2016 14:39, Humberto Hazin <hhazin em gmail.com <mailto:hhazin em gmail.com> > escreveu:

Muito obrigado Rodrigo e Elder,

parcialmente o problema foi resolvido, entretanto olhando o resultado abaixo do código do Elder no meu banco de dados teria que estar classificado dia mês ano barco para que a sequência de lances darem certos correto? Ou pode ser incluída no código?  Olhando o exemplo que esta em amarelo por exemplo o lance 3 deveria ser o lance 2.

 

    set.day setyear setmonth              boat lance
1         2    1978        8 SUMIYOSHI.MARU.32     1
2         4    1978        8      SEIKO.MARU.8     1
3        16    1978        4 SUMIYOSHI.MARU.32     2
4        13    1978        4 SUMIYOSHI.MARU.32     3
5        23    1978        9      SEIKO.MARU.8     2
6         7    1978       10 SUMIYOSHI.MARU.32     4
7        27    1978        1 SUMIYOSHI.MARU.32     5
8        10    1978        1  SUMIYOSHI.MARU.8     1

 

 

 

 

De: R-br [mailto:r-br-bounces em listas.c3sl.ufpr.br <mailto:r-br-bounces em listas.c3sl.ufpr.br> ] Em nome de Éder Comunello
Enviada em: quarta-feira, 11 de maio de 2016 11:23
Para: r-br em listas.c3sl.ufpr.br <mailto:r-br em listas.c3sl.ufpr.br> 
Assunto: Re: [R-br] Criar uma coluna de lancamentos de pesca

 

Humberto, bom dia!

 

Segue uma uma sugestão, sem considerar que possa haver duplicidade...

 

### <code r>

df <- read.table(text=

"dia mes  ano  boat 

9    1    2005 AGIOS.NIKOLAUS 

10   1    2005 AGIOS.NIKOLAUS 

11   1    2005 AGIOS.NIKOLAUS 

12   1    2005 AGIOS.NIKOLAUS 

13   1    2005 AGIOS.NIKOLAUS

9    1    2005 X    

10   1    2005 X    

11   1    2005 X    

12   1    2005 Y    

13   1    2005 Y", head=T, as.is <http://as.is> =T)

 

df$lance <- NA

df

 

for (boat in unique(df$boat)) {

     sel <- which(df$boat==boat)

     df[sel, "lance"] <- 1:length(sel)

}

 

df

#    dia mes  ano           boat lance

# 1    9   1 2005 AGIOS.NIKOLAUS     1

# 2   10   1 2005 AGIOS.NIKOLAUS     2

# 3   11   1 2005 AGIOS.NIKOLAUS     3

# 4   12   1 2005 AGIOS.NIKOLAUS     4

# 5   13   1 2005 AGIOS.NIKOLAUS     5

# 6    9   1 2005              X     1

# 7   10   1 2005              X     2

# 8   11   1 2005              X     3

# 9   12   1 2005              Y     1

# 10  13   1 2005              Y     2

### </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 11 de maio de 2016 09:37, Humberto Hazin <hhazin em gmail.com <mailto:hhazin em gmail.com> > escreveu:

Olá pessoal,

 

Estou precisando criar uma coluna chamada lances. Onde cada lance corresponde a um dia, mês, ano e barco conforme o exemplo abaixo:

 


           dia

mes

ano

boat


9

1

2005

AGIOS.NIKOLAUS


10

1

2005

AGIOS.NIKOLAUS


11

1

2005

AGIOS.NIKOLAUS


12

1

2005

AGIOS.NIKOLAUS


13

1

2005

AGIOS.NIKOLAUS

 

 

Eu gostaria que a tabela ficasse dessa forma aqui 

 


dia

mes

ano

boat

Lance


9

1

2005

AGIOS.NIKOLAUS

1


10

1

2005

AGIOS.NIKOLAUS

2


11

1

2005

AGIOS.NIKOLAUS

3


12

1

2005

AGIOS.NIKOLAUS

4


13

1

2005

AGIOS.NIKOLAUS

5

 

 

Agradeço desde já

 

Humberto

 

 

 

 


_______________________________________________
R-br mailing list
R-br em listas.c3sl.ufpr.br <mailto: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/20160519/619433b8/attachment.html>


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