여러 가지 방법으로 타임테이블 변수에 대한 시간 값을 재지정하고 동기화하기
이 예제에서는 여러 변수에 여러 가지 방법을 사용하여 타임테이블 변수에서 빈 자리를 채우는 방법을 보여줍니다. 타임테이블의 VariableContinuity
속성을 사용하여 각 타임테이블 변수에 연속 데이터 또는 이산 데이터를 포함시킬 것인지를 지정할 수 있습니다. retime
함수를 사용하여 타임테이블을 재추출하면 retime
은 VariableContinuity
속성의 값에 따라 이전 값으로 보간하고 채우거나 누락 데이터 표시자로 채웁니다. 마찬가지로, synchronize
함수는 입력 타임테이블의 VariableContinuity
속성에 따라 값을 보간하거나 채웁니다.
타임테이블 생성하기
2017년 5월 중 며칠 동안의 날씨 측정값을 시뮬레이션한 타임테이블을 생성합니다. 타임테이블 변수 Tmax
와 Tmin
에는 각 날짜의 최고 온도 측정값과 최저 온도 측정값이 포함되고, PrecipTotal
에는 해당 날짜의 총 강수량이 포함됩니다. WXEvent
는 categorical형 배열로, 지정된 날짜에 천둥 또는 우박 같은 특정 기상 현상이 발생했는지 여부를 기록합니다. 타임테이블에는 2017년 5월 4일부터 10일까지의 시뮬레이션 데이터가 포함되어 있지만 6일과 7일 이틀 동안의 데이터는 누락되었습니다.
Date = [datetime(2017,5,4) datetime(2017,5,5) datetime(2017,5,8:10)]'; Tmax = [60 62 56 59 60]'; Tmin = [44 45 40 42 45]'; PrecipTotal = [0.2 0 0 0.15 0]'; WXEvent = [2 0 0 1 0]'; WXEvent = categorical(WXEvent,[0 1 2 3 4],{'None','Thunder','Hail','Fog','Tornado'}); Station1 = timetable(Date,Tmax,Tmin,PrecipTotal,WXEvent)
Station1=5×4 timetable
Date Tmax Tmin PrecipTotal WXEvent
___________ ____ ____ ___________ _______
04-May-2017 60 44 0.2 Hail
05-May-2017 62 45 0 None
08-May-2017 56 40 0 None
09-May-2017 59 42 0.15 Thunder
10-May-2017 60 45 0 None
연속 타임테이블 변수와 이산 타임테이블 변수 재추출하기
누락된 이틀 동안의 데이터를 채울 방법 중 하나는 retime
함수를 사용하는 것입니다. 메서드를 지정하지 않고 retime
을 호출하면 retime
은 누락 데이터 표시자로 간격을 채웁니다. 예를 들면, retime
은 숫자형 변수의 빈 자리를 NaN
값으로 채우고, categorical형 변수의 빈 자리는 정의되지 않은 요소로 채웁니다.
Station1Daily = retime(Station1,'daily')
Station1Daily=7×4 timetable
Date Tmax Tmin PrecipTotal WXEvent
___________ ____ ____ ___________ ___________
04-May-2017 60 44 0.2 Hail
05-May-2017 62 45 0 None
06-May-2017 NaN NaN NaN <undefined>
07-May-2017 NaN NaN NaN <undefined>
08-May-2017 56 40 0 None
09-May-2017 59 42 0.15 Thunder
10-May-2017 60 45 0 None
retime
을 호출할 때 메서드를 지정하면 이 함수는 동일한 메서드를 사용하여 모든 변수의 빈 자리를 채웁니다. 변수마다 다른 메서드를 적용하려면 retime
을 여러 번 호출하고, 호출할 때마다 타임테이블의 요소를 참조하여 변수의 다른 서브셋에 액세스하면 됩니다.
타임테이블의 VariableContinuity
속성을 지정하여 다른 메서드를 적용할 수도 있습니다. 각 변수에 연속 데이터 또는 이산 데이터를 포함시킬 것인지를 지정할 수 있습니다. 그러면 retime
함수는 상응하는 VariableContinuity
값에 따라 각 타임테이블 변수에 각기 다른 메서드를 적용합니다.
VariableContinuity
를 지정하면 retime
함수는 다음 메서드를 사용하여 출력 타임테이블 변수를 채웁니다.
'unset'
— 변수의 유형에 맞는 누락 데이터 표시자(예: 숫자형 변수의 경우NaN
)를 사용하여 값을 채웁니다.'continuous'
— 선형 보간을 사용하여 값을 채웁니다.'step'
— 이전 값을 사용하여 값을 채웁니다.'event'
— 변수의 유형에 맞는 누락 데이터 표시자를 사용하여 값을 채웁니다.
Station1
의 온도 데이터는 연속 데이터, PrecipTotal
은 스텝 데이터, WXEvent
는 이벤트 데이터로 지정합니다.
Station1.Properties.VariableContinuity = {'continuous','continuous','step','event'}; Station1.Properties
ans = TimetableProperties with properties: Description: '' UserData: [] DimensionNames: {'Date' 'Variables'} VariableNames: {'Tmax' 'Tmin' 'PrecipTotal' 'WXEvent'} VariableTypes: ["double" "double" "double" "categorical"] VariableDescriptions: {} VariableUnits: {} VariableContinuity: [continuous continuous step event] RowTimes: [5x1 datetime] StartTime: 04-May-2017 SampleRate: NaN TimeStep: NaN Events: [] CustomProperties: No custom properties are set. Use addprop and rmprop to modify CustomProperties.
Station1
의 데이터를 재추출합니다. VariableContinuity
에 할당된 값에 따라, retime
함수는 온도 데이터를 보간하고 PrecipTotal
의 빈 자리에는 전날의 값을 채우고 정의되지 않은 요소로 WXEvent
의 빈 자리를 채웁니다.
Station1Daily = retime(Station1,'daily')
Station1Daily=7×4 timetable
Date Tmax Tmin PrecipTotal WXEvent
___________ ____ ______ ___________ ___________
04-May-2017 60 44 0.2 Hail
05-May-2017 62 45 0 None
06-May-2017 60 43.333 0 <undefined>
07-May-2017 58 41.667 0 <undefined>
08-May-2017 56 40 0 None
09-May-2017 59 42 0.15 Thunder
10-May-2017 60 45 0 None
메서드를 지정할 경우 retime
은 VariableContinuity
의 값을 무시하고 지정된 메서드를 모든 변수에 적용합니다.
Station1Missing = retime(Station1,'daily','fillwithmissing')
Station1Missing=7×4 timetable
Date Tmax Tmin PrecipTotal WXEvent
___________ ____ ____ ___________ ___________
04-May-2017 60 44 0.2 Hail
05-May-2017 62 45 0 None
06-May-2017 NaN NaN NaN <undefined>
07-May-2017 NaN NaN NaN <undefined>
08-May-2017 56 40 0 None
09-May-2017 59 42 0.15 Thunder
10-May-2017 60 45 0 None
연속 데이터와 이산 데이터가 포함된 타임테이블 동기화하기
또한 synchronize
함수는 각 입력 타임테이블의 VariableContinuity
속성에 지정된 값에 따라 각기 다른 방법으로 출력 타임테이블 변수를 채웁니다.
두 번째 기상 관측소에서 측정한 기압 값(단위: 밀리바)이 포함된 두 번째 타임테이블을 만듭니다. 타임테이블에는 2017년 5월 4일부터 8일까지의 시뮬레이션 측정값이 포함되어 있습니다.
Date = datetime(2017,5,4:8)'; Pressure = [995 1003 1013 1018 1006]'; Station2 = timetable(Date,Pressure)
Station2=5×1 timetable
Date Pressure
___________ ________
04-May-2017 995
05-May-2017 1003
06-May-2017 1013
07-May-2017 1018
08-May-2017 1006
synchronize
함수를 사용하여 두 관측소의 데이터를 동기화합니다. synchronize
는 Station1
의 VariableContinuity
속성에 지정된 값에 따라 Station1
변수의 값을 채웁니다. 그러나 Station2
의 VariableContinuity
속성은 비어 있기 때문에 synchronize
는 Pressure
를 NaN
값으로 채웁니다.
BothStations = synchronize(Station1,Station2)
BothStations=7×5 timetable
Date Tmax Tmin PrecipTotal WXEvent Pressure
___________ ____ ______ ___________ ___________ ________
04-May-2017 60 44 0.2 Hail 995
05-May-2017 62 45 0 None 1003
06-May-2017 60 43.333 0 <undefined> 1013
07-May-2017 58 41.667 0 <undefined> 1018
08-May-2017 56 40 0 None 1006
09-May-2017 59 42 0.15 Thunder NaN
10-May-2017 60 45 0 None NaN
Station2.Pressure
에 연속 데이터가 포함됨을 표시하려면 Station2
의 VariableContinuity
속성을 지정하십시오. Station2
에 변수가 하나만 있는 경우에도 문자형 벡터가 아닌 셀형 배열을 사용하여 VariableContinuity
를 지정해야 합니다.
Station2.Properties.VariableContinuity = {'continuous'};
Station2.Properties
ans = TimetableProperties with properties: Description: '' UserData: [] DimensionNames: {'Date' 'Variables'} VariableNames: {'Pressure'} VariableTypes: "double" VariableDescriptions: {} VariableUnits: {} VariableContinuity: continuous RowTimes: [5x1 datetime] StartTime: 04-May-2017 SampleRate: NaN TimeStep: 1d Events: [] CustomProperties: No custom properties are set. Use addprop and rmprop to modify CustomProperties.
두 관측소의 데이터를 동기화합니다. Station2.Pressure
에는 연속 데이터가 포함되므로 synchronize
는 BothStations.Pressure
의 값을 채웁니다.
BothStations = synchronize(Station1,Station2)
BothStations=7×5 timetable
Date Tmax Tmin PrecipTotal WXEvent Pressure
___________ ____ ______ ___________ ___________ ________
04-May-2017 60 44 0.2 Hail 995
05-May-2017 62 45 0 None 1003
06-May-2017 60 43.333 0 <undefined> 1013
07-May-2017 58 41.667 0 <undefined> 1018
08-May-2017 56 40 0 None 1006
09-May-2017 59 42 0.15 Thunder 994
10-May-2017 60 45 0 None 982
synchronize
에 대한 입력 인수로 메서드를 지정하면 synchronize
는 retime
함수와 마찬가지로 이 메서드를 모든 변수에 적용합니다.
참고 항목
timetable
| synchronize
| retime