Matlab - Eliminar NaN o contar datos

 
Vista:

Eliminar NaN o contar datos

Publicado por nannis (8 intervenciones) el 10/09/2016 22:06:42
Buenas tardes,

tengo una base de datos del siguiente tipo:

1306810 1306804 1306809 1306805
16.12 NaN NaN NaN
12.21 NaN NaN NaN
9.56 NaN NaN NaN
33.19 NaN NaN 27.41
42.11 NaN NaN 58.5
23.47 24.44 NaN 47.31
28.36 31.79 10.71 19.64
41.51 57.92 NaN 31.57
23.93 23.31 NaN 48.9
13.79 15.56 NaN 11.98
36.91 64.61 NaN 60
34.19 65.21 NaN 61.12
41.3 64 NaN 68.4
39.55 76.88 47.5 66.56
40.03 77.93 NaN 82.14
41.55 50.77 NaN 75.23
50.71 76.39 35 52.99
51.28 98.06 51.28 84.98
40.27 47.66 NaN 89.3
35.16 50.73 NaN 51.99

Donde en la primera fila representa el número de la estación.
Las columnas y las filas varían por cada file, pero por lo general son mas de 500.

Lo que necesito obtener, por ejemplo, es :

1.-Encontrar la(s) columna(s) (estaciones) que tenga(n) 17 datos o más (sin contar los NaN); la respuesta sería las columnas 1306810 1306805

2.-Encontrar la(s) columna(s) (estaciones) que tenga(n) 4 datos o más (sin contar los NaN); en este caso la respuesta sería todas las columnas.

Muchas gracias por su ayuda
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Daniel
Val: 399
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Eliminar NaN o contar datos

Publicado por Daniel (264 intervenciones) el 12/09/2016 18:27:58
Si tenes una matriz a:

1
2
3
4
5
6
7
8
9
10
a =
 
     1   NaN
     3   NaN
   NaN   NaN
     4   NaN
   NaN     2
     5   NaN
     3   NaN
   NaN   NaN

~isnan(a) te da 1 cuando el dato es válido y 0 cuando es NaN

1
2
3
4
5
6
7
8
9
10
11
~isnan(a)
ans =
 
     1     0
     1     0
     0     0
     1     0
     0     1
     1     0
     1     0
     0     0
Luego sum(~isnan(a))

1
2
3
4
sum(~isnan(a))
ans =
 
     5     1

Es la cantidad de valores válidos por columna

finalmente find(sum(~isnan(a))>3)

1
2
3
4
find(sum(~isnan(a))>3)
ans =
 
     1

Te da las columnas en donde hay mas de tres datos válidos, para este ejemplo

Solo queda implementarlo para tus datos particulares

Comentanos como te fue

Saludos

Daniel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Eliminar NaN o contar datos

Publicado por nannis (8 intervenciones) el 13/09/2016 07:20:37
Gracias Daniel,

funciona perfectamente, me da las columnas con los datos que requiero.

Gentilmente podrías ayudarme con lo siguiente (siempre usando tu ejemplo): si tu primer y segunda columna tuvieran nombres, por ejemplo Z e Y , cómo podría hacer para que en el resultado final, en vez de darme respuesta "1" (columna 1) me diera la respuesta del nombre de dicha columna ("Z" ).

Te agradezco muchísimo por la ayuda.

Saludos

Nancy
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Daniel
Val: 399
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Eliminar NaN o contar datos

Publicado por Daniel (264 intervenciones) el 13/09/2016 17:43:04
no sé como tenes guardados los nombres... supongo que los tienes guardados como 'cell' es decir por ejemplo

1
nombres={'tiempo','posicion'};

luego las columnas donde se cumple la condición 1 son las que obtenes de valido1=find(sum(~isnan(a))>3) y la condicion 2 sería valido2=find(sum(~isnan(a))>0) para este ejemplo

entonces nombres(valido1) y nombres(valido2) te darán los nombre de las columnas donde se cumple la condicion 1 y 2 respectivamente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
>> valido1=(find(sum(~isnan(a))>3))
 
valido1 =
 
     1
 
>> valido2=(find(sum(~isnan(a))>0))
 
valido2 =
 
     1     2
 
>> nombres(valido1)
 
ans =
 
    'tiempo'
 
>> nombres(valido2)
 
ans =
 
    'tiempo'    'posicion'

Seguinos comentando como te ha resultado

Saludos

Daniel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Eliminar NaN o contar datos

Publicado por nannis (8 intervenciones) el 15/09/2016 07:48:59
Muchísimas gracias,

funciona a la perfección!!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar