Como lidar com o NAN's ao ler em um arquivo CSV em C ++
Pergunta
Estou lendo em um arquivo CSV de dados de séries temporais em um programa C ++. Meus dados, no entanto, contêm alguns nan. Por exemplo:
1-Jul-2010, 1.0
2-Jul-2010, 2.0
3-Jul-2010, NaN
4-Jul-2010, 3.0
Para lidar com isso, escrevi um pequeno script no Matlab, que substitui todos os nans por 0,0 - então li no novo arquivo sem o NAN's. Existe uma maneira fácil ou evitar esse pré-processamento?
Obrigado!
Solução
Como David já mencionado, você não precisa pré-processar o arquivo. strtof () e strtod () são capazes de converter a string nan para o valor nan -float/duplo.
Se você deseja substituir os valores por 0.0 no seu conjunto de dados, pode fazê -lo usando a função iSNAN ().
if (isnan(val))
{
val = 0.0;
}
Outras dicas
Deseja que o resultado seja uma nan float (ou dupla) - use a função stdlib strtod ().
Se você quiser lidar com isso à sua maneira (defina -o como 0 etc), leia cada linha em uma string primeiro, verifique a NAN com strcmp (), analise a string dependendo do que você encontrar - mais fácil se a NAN só puder aparecer em uma coluna.