Timestamp에따른 데이터 재배열

게시판 IDL Q&A Timestamp에따른 데이터 재배열

2 답변 글타래를 보이고 있습니다
  • 글쓴이
    • #3009 Reply
      S.H.Ahn
      회원

      안녕하세요,

      —————————————————————————————–
      Level 2.0. Quality Assured Data.<p>The following data are pre and post field calibrated automatically cloud cleared and manually inspected.
      Version 2 Direct Sun Algorithm
      Location=Hornsund long=15.560 lat=77.001 elev=10 Nmeas=3 PI=Brent_Holben_and_Piotr_Sobolewski Email=Brent.N.Holben@nasa.gov_and_piotr_sobolewski_aer@onet.pl
      AOD Level 2.0 Daily Averages UNITS can be found at http //aeronet.gsfc.nasa.gov/data_menu.html
      Date(dd-mm-yy) Time(hh mm ss) Julian_Day AOT_1640 AOT_1020 AOT_870 AOT_675 AOT_667 AOT_555 AOT_551 AOT_532
      26 3 2007 0 0 0 85 N/A 0.03684 0.034902 0.033 N/A N/A
      28 3 2007 0 0 0 87 N/A 0.02866 0.025444 0.027179 N/A N/A
      31 3 2007 0 0 0 90 N/A 0.033925 0.02906 0.034612 N/A N/A
      2 4 2007 0 0 0 92 N/A 0.036533 0.03258 0.039801 N/A N/A
      3 4 2007 0 0 0 93 N/A 0.038279 0.036344 0.047767 N/A N/A
      7 4 2007 0 0 0 97 N/A 0.062969 0.057492 0.060628 N/A N/A
      —————————————————————————————–

      제가 이런 데이터 포멧을 가진 일 평균 자료를 정리하고있는데요,
      문제는 Timestamp가 연속적으로 나오지 않고 값이 있는 날만 년,월,일,데이터가 제공된다는겁니다.

      자료가 missing인 날도 N/A으로 처리를 해야하는데 Timestamp를 미리 만들어 놓고 엑셀로 일일이 자료를 복사 붙여넣기 하자니 자료 기간이 너무 길어서 무리네요.

      Julday와 반복문을 이용해서 나머지 missing 데이터도 N/A로 채워넣고싶은데 아직 실력이 부족해서 아이디어가 떠오르지않네요…

      도와주시면 감사하겠습니다!

    • #3010 Reply
      mwkim
      회원

      안녕하세요.

      올려주신 내용은 불연속적인 데이터를 연속적인 자료에 넣고 비어있는 부분은 N/A 값으로 처리하고 싶으신 건데

      사실 질문자께서 올려주신 내용대로 하면 됩니다.

      (가정을 하였는데 위 자료를 볼 때, 중복되지 않는 날짜 순서로 정렬된 일별 자료로 판단하였습니다.)

      1. 미리 자료를 넣을 배열(이름은 data라고 하겠습니다)을 만듭니다.
      – 이때 배열의 길이(length)는 자료의 처음과 끝 날짜를 기준으로 계산하시면 됩니다.

      2. data 배열의 모든 값에 미리 N/A값을 넣습니다.
      – 문자형으로 처리하실 꺼면 ‘N/A’라고 하면 되고, 실수형으로 할 꺼면 !VALUES.F_NAN을 넣으면 됩니다.

      3. length와 동일한 길이로 시간배열(date)을 만듭니다.
      TIMEGEN 함수를 사용하면 편리합니다. START옵션을 통해서 시작날짜를 정하고 UNIT으로 단위를 일단위로 정의하시면 됩니다(TIMEGEN 도움말 참조).

      4. 반복문을 통해 date 함수가 위 원시 데이터의 날짜와 같을 때의 자료르 data에 넣습니다.
      이 부분을 코드로 만들면 아래와 같이 할 수 있습니다.
      j = 0
      FOR i = 0, legnth -1 DO BEGIN
      IF date[i] EQ rawDate[j] THEN BEGIN ; rawDate 는 원시 자료의 날짜(JULDAY 함수값)입니다.
      data[i] = rawData[j] ; rawData 는 원시 자료의 날짜(JULDAY 함수값)입니다.
      j ++
      ENDIF
      ENDFOR

      사실 위에 작성해드린 내용은
      ‘자료가 missing인 날도 N/A으로 처리를 해야하는데 Timestamp를 미리 만들어 놓고 엑셀로 일일이 자료를 복사 붙여넣기 하자니 자료 기간이 너무 길어서 무리네요.’
      이 부분을 반복처리하도록 단계 단계로 구성한 것에 불과합니다.

      코드를 작성하실 때, 뭔가 어렵다고 생각되시면

      문제를 작은 단위로 쪼개서 해당 부분을 코드로 만들고 연결하는 방법을 사용해보시는 것도 추천드립니다.

    • #3011 Reply
      S.H.Ahn
      회원

      알려주신 방법으로 문제 잘 해결하였습니다.

      정말 고맙습니다!! ^_^

2 답변 글타래를 보이고 있습니다
'Timestamp에따른 데이터 재배열'에 답변달기
글쓴이 정보: