[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