主要内容

convertvars

转换表或时间表变量指定的数据类型

描述

示例

T2 = convertvars(T1.瓦尔的dataType将指定的变量转换为指定的数据类型。输入参数T1.可以是表或时间表。

虽然你可以指定的dataType作为数据类型的名称,还可以将其指定为函数句柄。在这种情况下,它是一个函数的句柄,用于转换或修改指定的变量瓦尔。同样地,瓦尔可以包含变量名或变量位置在T1.,也可以是标识变量的函数句柄。

例子

全部折叠

从含有上电停电数据的电子表格读取的表。该表具有文本变量显示每个停电区域和原因,日期时间变量显示停机和恢复时间,并呈现受影响的客户的功率损耗和数量数值变量。显示前五行。

T1 = readtable ('outages.csv');头(T1, 5)
ans =5×6表地区OutageTime客户流失RestorationTime原因_____________ ________________ ______ __________ ________________ ___________________ { '西南'} 2002-02-01 12:18 458.98 1.8202e + 06 2002年2月7日16:50 { '暴风雪'} { '东南'} 2003-01-23零点49 530.14 2.1204e + 05的NaT { '冬季风暴'} { '东南亚'} 2003-02-07 21:15 289.4 1.4294e + 05 2003-02-17 8时14分{ '冬季风暴'} { '西'} 2004-04-06 05:44 434.81 3.4037e + 05 2004-04-06 06:10 { '设备故障'} {“中西部地区} 2002年3月16日06:18 186.44 2.1275e +05 2002-03-18 23:23 { '强风暴'}

转换变量地区导致分类变量。请注意,分类值不会用引号显示。

T2 = convertvars (T1, {“区域”“原因”},“分类”);头(T2,5)
ans =5×6表区域中断时间损失客户恢复时间原因_________ ________________ ________________ ________________ _______________ SouthWest 2002-02-01 12:18 458.98 1.8202e+06 2002-02-07 16:50 winter storm SouthEast 2003-01-23 00:49 530.14 2.1204e+05 NaT winter storm SouthEast 2003-02-07 21:15 289.4 1.4294e+05 2003-02-17 08:14 winter storm West2004-04-06 05:44 434.81 3.4037e+05 2004-04-06 06:10设备故障中西部2002-03-16 06:18 186.44 2.1275e+05 2002-03-18 23:23

将变量转换为提供不同功能的数据类型是很方便的。例如,现在T2。地区是分类变量,可以使用功能按区域进行停电的饼图。但你不能使用T1.Region作为输入参数,因为变量包含文本,而不是分类数据。

馅饼(T2.Region)

检测哪些表变量是datetime数组。然后使用datetime函数的参数convertvars函数来指定时区和显示格式。

阅读断电数据表中并显示前三排。

T1 = readtable ('outages.csv');头(T1, 3)
ans =3×6表地区OutageTime RestorationTime造成损失客户  _____________ ________________ ______ __________ ________________ ________________ {' 西南的}2002-02-01 12:18 458.98 - 1.8202 e + 06 2002-02-01 16:50{“暴风雪”}{“东南”}2003-01-23 00:49 530.14 - 2.1204 e + 05 NaT{“暴风雪”}{“东南”}2003-02-07)21:15 289.4 - 1.4294 e + 05年2003-02-0708:14{“暴风雪”}

中的datetime数组T1.不要设置时区。不需要指定表变量的名称或位置,就可以使用功能手柄isdatetime函数。(函数句柄是存储与函数关联的变量。你可以使用函数句柄将一个函数传递给另一个函数。例如,指定@isdatetime该句柄传递给convertvars)。然后您可以转换所有的datetime变量,使它们具有时区和不同的显示格式。这种技术在转换具有相同数据类型的许多表变量时非常有用。

打电话给convertvars函数。要修改到位的时区和格式,指定匿名函数调用datetime函数与“时区”“格式”名称 - 值对的参数。(匿名函数不存储在一个程序文件。它可以是,只需要一个简单的定义,功能是有用的。在这种情况下,它也允许通话datetime与多个输入,而传递convertvars只接受一个输入的函数,如convertvars需要。)显示第一三行,表示格式的变化。

modifyTimeZoneAndFormat = @(X)(日期时间(X,“时区”UTC的“格式”'MMM dd, yyyy, HH:mm z'));T2 = convertvars(T1,@ isdatetime,modifyTimeZoneAndFormat);头(T2,3)
ans =3×6表地区OutageTime客户流失RestorationTime原因_____________ _______________________ ______ __________ _______________________ ________________ { '西南'} 2002年2月1日,12:18 UTC 458.98 1.8202e + 06 2002年2月7日,16:50 UTC { '暴风雪'} { '东南'} 2003年1月23日,00:49 UTC 530.14 2.1204e + 05的NaT { '暴风雪'} { '东南'} 2003年2月7日,21:15 UTC 289.4 1.4294e + 05 2003年2月17日,08:14 UTC{“冬季风暴”}

输入参数

全部折叠

输入表,指定为表或时间表。

如果T1.是时刻表,那你就不能用了convertvars转换其行次,因为该行时间不时间表变量包含。行时间是时间表的元数据。

变量在输入表或时间表,指定为字符向量,特征向量的单元阵列中,字符串数组,数字数组,逻辑阵列,或功能句柄。

如果瓦尔是函数句柄,则该函数必须接受一个输入参数,标识其数据类型,并返回逻辑标量。例如,使用theISNUMERIC函数来检测哪些变量是数值的。

例子:T2 = convertvars(T1, '区域', '绝对')转换变量的类型地区

例子:T2 = convertvars(T1,[1,3:6], '字符串')将位置指定的变量转换为字符串数组。

例子:T2 = convertvars (T1、@isnumeric int32)将所有数值变量转换为32位整数。

转换变量的数据类型,指定为字符向量、字符串标量或函数句柄。

如果的dataType是函数句柄,则该函数必须接受一个输入参数并将其转换为另一种数据类型。例如,函数将输入参数转换为字符串数组。

该表显示许多常见的数据类型的名称。

“单一” 单精度数
“双” 双精度数
“int8” 签署了8位整数
“int16” 签署了16位整数
'INT32' 签署了32位整数
“int64” 签署了64位整数
'UINT8' Unsigned 8位整数
'UINT16' 16位无符号整数
“uint32” 32位无符号整数
'UINT64' 未签名的64位整数
“逻辑” 合乎逻辑1真正的)或0.
“字符串” 字符串数组
“细胞” 单元阵列
'cellstr' 字符向量的单元格数组
“分类” 分类数组
“日期时间” Datetime数组
“持续时间” 持续时间数组
“calendarDuration” 日历时间阵列

如果您指定“字符”作为数据类型,则convertvars将变量转换为字符数组。最佳实践是避免创建字符数组的表或时间表变量。相反,考虑将变量转换为字符串数组、分类数组或字符向量的单元格数组。

例子:T2 = convertvars(T1, 'OutageTime', '日期时间')转换变量的类型OutageTime

例子:T2 = convertvars(T1, '地区',@分类)转换使用函数句柄可变分类函数。

扩展能力

在R2018B中介绍