여러 가지 방법으로 타임테이블 변수에 대한 시간 값을 재지정하고 동기화하기
이 예제에서는 여러 변수에 여러 가지 방법을 사용하여 타임테이블 변수에서 빈 자리를 채우는 방법을 보여줍니다. 타임테이블의 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.Propertiesans =
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: [5×1 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.Propertiesans =
TimetableProperties with properties:
Description: ''
UserData: []
DimensionNames: {'Date' 'Variables'}
VariableNames: {'Pressure'}
VariableTypes: "double"
VariableDescriptions: {}
VariableUnits: {}
VariableContinuity: continuous
RowTimes: [5×1 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