Coordenadas e distâncias

Olá pessoal do R-br. Meus dados consistem basicamente em coordenadas e o horário em que cada ponto foi obtido, como exemplificado a seguir: obs dia min x y 1 1 400 425 475 2 1 410 425 425 3 1 420 475 325 4 1 430 525 325 5 1 435 525 275 6 1 443 525 275 obs se refere a cada unidade de amostra, dia a cada dia de coleta (um total de 73), min é o horário em unidades de minutos e x e y cada elemento do ponto cartesiano. O que preciso obter desses dados é a distribuição de distâncias euclidianas entre um ponto escolhido aleatoriamente e todos os pontos seguintes de um mesmo dia. Ou seja, preciso escolher aleatoriamente um ponto por dia, calcular, para todos os dias, a euclidiana entre este ponto e todos os pontos posteriores do mesmo dia e relacionar a distância espacial com a diferença de tempo entre os pontos e o dia em que cada distância está associada. Eu já elaborei um código pra isso. Caso tenham sugestões para melhorar o código, ficarei agradecido. Porém, não consigo passar para uma próxima etapa. Como poderia fazer para repetir esse procedimento o número de vezes que fosse necessário? Por exemplo, existem milhares de combinações de pontos escolhidos aleatoriamente ao longo dos 73 dias. Eu gostaria de repetir o procedimento 1000 vezes para ter uma ideia da variação de distribuição de distâncias que posso obter em decorrência da escolha aleatória de um ponto de origem por dia. Código já elaborado: arquivo<-read.table("arquivo.txt",head=T) fixo<-numeric() #vetor com origens de cada dia ult<-numeric() #vetor com últimos pontos de cada dia xy<-list() #lista para armazenar a "parte dos pontos de cada dia" delimitadas por fixo e ult hor<-list() #lista para armazenar a "parte dos horarios de cada dia" delimitadas por fixo e ult distancias<-list()#distancias euclidianas tempo<-list()#diferença de tempo entre os pontos dia<-list()#dia de coleta for (i in 1:max(unique(arquivo$dia))){ #repetindo até o total de dias fixo[i]<-sample(arquivo$obs[arquivo$dia==i],1)#sorteio ponto de origem ult[i]<-max(arquivo$obs[arquivo$dia==i])#armazenando último ponto de cada dia xy[[i]]<-arquivo[fixo[i]:ult[i],4:5]#armazenando parte dos pontos de cada dia hor[[i]]<-arquivo[fixo[i]:ult[i],6]#armazenando parte dos horários de cada dia distancias[[i]]<-dist(xy[[i]])[1:nrow(xy[[i]])-1]#somente as distâncias em relação ao primeiro ponto interessam tempo[[i]]<-dist(horarios[[i]])[1:length(horarios[[i]])-1]#somente diferenças ao primeiro ponto dia[[i]]<-rep(i,length(arquivo$dia[fixo[i]:ult[i]])-1)$cada dia de coleta } distancias<-unlist(distancias) tempo<-unlist(tempo) dia<-unlist(dia) dtd<-data.frame(distancias,tempo,dia) Este data.frame seria como uma unidade de amostra das milhares de distribuições que são possíveis de obter. Como otimizar para que qualquer número desejado não seja dispendioso de obter? Obrigado pela atenção -- Roberto Guevara Ferreira Lima Biólogo - CRBio 6ª Região: 73146/06-D Mestre em Zoologia Laboratório de Ecologia e Zoologia de Vertebrados Instituto de Ciências Biológicas Universidade Federal do Pará Rua Augusto Corrêa, nº 01 - Bairro: Guamá. CEP: 66075-110 Currículo Lattes: http://lattes.cnpq.br/7363382159007600

utilize um laço, o comando for ou while resolvem, dependendo do que você deseje fazer Tito Conte 2013/7/8 Roberto Guevara <robertoguevara.bio@gmail.com>
Olá pessoal do R-br.
Meus dados consistem basicamente em coordenadas e o horário em que cada ponto foi obtido, como exemplificado a seguir:
obs dia min x y 1 1 400 425 475 2 1 410 425 425 3 1 420 475 325 4 1 430 525 325 5 1 435 525 275 6 1 443 525 275
obs se refere a cada unidade de amostra, dia a cada dia de coleta (um total de 73), min é o horário em unidades de minutos e x e y cada elemento do ponto cartesiano.
O que preciso obter desses dados é a distribuição de distâncias euclidianas entre um ponto escolhido aleatoriamente e todos os pontos seguintes de um mesmo dia. Ou seja, preciso escolher aleatoriamente um ponto por dia, calcular, para todos os dias, a euclidiana entre este ponto e todos os pontos posteriores do mesmo dia e relacionar a distância espacial com a diferença de tempo entre os pontos e o dia em que cada distância está associada.
Eu já elaborei um código pra isso. Caso tenham sugestões para melhorar o código, ficarei agradecido. Porém, não consigo passar para uma próxima etapa. Como poderia fazer para repetir esse procedimento o número de vezes que fosse necessário? Por exemplo, existem milhares de combinações de pontos escolhidos aleatoriamente ao longo dos 73 dias. Eu gostaria de repetir o procedimento 1000 vezes para ter uma ideia da variação de distribuição de distâncias que posso obter em decorrência da escolha aleatória de um ponto de origem por dia.
Código já elaborado:
arquivo<-read.table("arquivo.txt",head=T)
fixo<-numeric() #vetor com origens de cada dia ult<-numeric() #vetor com últimos pontos de cada dia xy<-list() #lista para armazenar a "parte dos pontos de cada dia" delimitadas por fixo e ult hor<-list() #lista para armazenar a "parte dos horarios de cada dia" delimitadas por fixo e ult distancias<-list()#distancias euclidianas tempo<-list()#diferença de tempo entre os pontos dia<-list()#dia de coleta for (i in 1:max(unique(arquivo$dia))){ #repetindo até o total de dias fixo[i]<-sample(arquivo$obs[arquivo$dia==i],1)#sorteio ponto de origem ult[i]<-max(arquivo$obs[arquivo$dia==i])#armazenando último ponto de cada dia xy[[i]]<-arquivo[fixo[i]:ult[i],4:5]#armazenando parte dos pontos de cada dia hor[[i]]<-arquivo[fixo[i]:ult[i],6]#armazenando parte dos horários de cada dia distancias[[i]]<-dist(xy[[i]])[1:nrow(xy[[i]])-1]#somente as distâncias em relação ao primeiro ponto interessam tempo[[i]]<-dist(horarios[[i]])[1:length(horarios[[i]])-1]#somente diferenças ao primeiro ponto dia[[i]]<-rep(i,length(arquivo$dia[fixo[i]:ult[i]])-1)$cada dia de coleta }
distancias<-unlist(distancias) tempo<-unlist(tempo) dia<-unlist(dia)
dtd<-data.frame(distancias,tempo,dia)
Este data.frame seria como uma unidade de amostra das milhares de distribuições que são possíveis de obter. Como otimizar para que qualquer número desejado não seja dispendioso de obter?
Obrigado pela atenção
-- Roberto Guevara Ferreira Lima
Biólogo - CRBio 6ª Região: 73146/06-D Mestre em Zoologia Laboratório de Ecologia e Zoologia de Vertebrados Instituto de Ciências Biológicas Universidade Federal do Pará Rua Augusto Corrêa, nº 01 - Bairro: Guamá. CEP: 66075-110 Currículo Lattes: http://lattes.cnpq.br/7363382159007600 _______________________________________________ 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.
participantes (2)
-
Roberto Guevara
-
Tito Conte