主要内容

convertvars

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

描述

例子

T2 = convertvars (T1var数据类型将指定的变量转换为指定的数据类型。输入参数T1可以是一张桌子或时刻表。

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

例子

全部折叠

从包含电力中断数据的电子表格中读取表格。表格中有文本变量,显示每次停电的地区和原因,日期时间变量,显示停电和恢复时间,数字变量,显示停电和受影响的客户数量。显示前5行。

T1 = readtable (“outages.csv”);头(T1, 5)
ans =5×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 + 052003-02-17 08:14 {'winter storm'} {'West'} 2004-04-06 05:44 434.81 3.4037e+05 2004-04-06 06:10 {'equipment fault'} {'MidWest'} 2002-03-16 06:18 186.44 2.1275e+05 2002-03-18 23:23 {'severe storm'}

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

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。地区作为的输入参数,因为该变量包含文本,而不是分类数据。

派(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) (datetime (x,“时区”UTC的“格式”'MMM dd, yyyy, HH:mm z'));(T1, T2 = convertvars @isdatetime modifyTimeZoneAndFormat);头(T2, 3)
ans =3×6表地区OutageTime RestorationTime造成损失客户  _____________ _______________________ ______ __________ _______________________ ________________ {' 2002年西南的}2月1日,12:18 UTC 458.98 - 1.8202 e + 06 07年2月,2002年,16:50 UTC{“暴风雪”}{“东南”}1月23日,2003年,00:49 UTC 530.14 - 2.1204 e + 05 NaT{“暴风雪”}{“东南”}07年2月,2003, 21:15 UTC 289.4 1.4294e+05 Feb 17, 2003, 8:14 UTC {'winter storm'}

输入参数

全部折叠

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

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

输入表或时间表中的变量,指定为字符向量、字符向量的单元数组、字符串数组、数字数组、逻辑数组或函数句柄。

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

例子:(T1, T2 = convertvars“地区”、“分类”)转换变量的类型地区

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

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

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

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

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

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

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

例子:(T1, T2 = convertvars OutageTime, datetime)转换变量的类型OutageTime

例子:(T1, T2 = convertvars“地区”,@categorical)将变量使用函数句柄转换为分类函数。

扩展功能

介绍了R2018b