
Uma pequena amostra dos dados ajudaria. Mas com certeza dá pra vetorizar isso, e talvez até usar o pacote data.table. Eu entendi que c é 60.000 e h 200? Talvez resolva o loop externo: bancof[,1] %in% obsf[1,1] & bancof[,2] %in% obsf[1,2] Isso deve retornar um vetor de True e False. Apenas some os T (ou os F) e você tem a sua resposta. Aí você pode passar um loop para cada um. Outra opção, se o "%in%" não funcionar, é usar o match. Por exemplo: is.na(match(bancof[,1] %in% obsf[1,1])) & is.na(match(bancof[,2] %in% obsf[1,2])) O match retorna NA quando não há match. Assim, com os is.na, vocÊ tem um vetor que é T onde não há match. Combinando os dois testes, vocÊ tem um vetor onde é T se não houver os dois matchs. Depois, basta dá um sum no vetor para ter a qtde que não há match. Como o h é de 200, um loop em h deve ser rápido. Mas creio que dá pra evitar um loop completamente, talvez pensando em termos de algebra linear e multiplicações de vetores, construindo alguma indicadora. MAs sem um exemplo reproduzível fica difícil ajudar. abçs M 2013/4/19 Helena Turon <helena.turon@gmail.com>
Prezados,
Para contar os horários ou dias sem observações na estação meteorológica, dados faltantes. Fiz um “for” no R:
c=comprimento do vetor teórico (sequencia de datas e horários que deveriam existir observações).
h= comprimento dos dados das estações (pode haver horários ou dias seguidos sem observações).
igual=0
for (m in 1:c){
for (jj in 1:h){
if ((bancof[m,1] == obsf[jj,1]) & (bancof[m,2] == obsf[jj,2]) )
{igual = igual+1}
}
}
faltantes = c-igual
coluna 1 é data dd/mm/aaaa e
coluna 2 horário (0, 12, 18)
Mas ele está demorado: uns 20 minutos por estação (pois elas têm umas 60.000 observações). Eu tenho umas 200 estações.
Serão quatro dias, só para os dados do Brasil, têm ainda outros países da América do Sul.
Será que existe alguma função no R que faça isto mais depressa?
Obrigada,
-- Helena Turon Balbino Meteorologista Instituto Nacional de Meteorologia - INMET 7º DISTRITO DE METEOROLOGIA (SP e MS) Tel: (11) 5051-5700 ********************************************************
_______________________________________________ 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.
-- Manoel Galdino https://sites.google.com/site/galdinomcz/