R语言 用xts和zoo操纵时间序列数据
xts和zoo是两个R包,提供了操作时间序列数据的工具和函数。这两个包都提供了读取、写入和操作以各种格式存储的时间序列数据的功能,如CSV、Excel和其他数据源。我们将从介绍xts和zoo类、基本操作、合并和修改时间序列开始,到最后,我们将讨论按时间应用和聚合的问题。
XTS和zoo类
语法
在R中,xts扩展了zoo类。一个xts对象类似于一个由时间对象索引的观察矩阵。我们可以通过使用下面的语法来创建一个xts对象。
这里myData代表数据,order.by代表一个数据/时间类型的向量(用于索引数据)。
请注意,我们也可以通过创建名-值对来将元数据包含在xts对象中,如birthdayDate = as.POSIXct(“2000-09-07”)。
示例
考虑下面的一个例子,它使用一个由日期向量索引的数据向量创建一个xts对象。正如你在下面看到的,我们也使用了名-值对来添加元数据—–。
输出
正如你在输出中所看到的,我们已经创建了一个XTS对象,它的索引是一个包含从01-01-2022到10-01-2022日期的日期向量。
Zoo类为我们提供了coredata()和index()函数,使用这些函数我们可以将核心数据和索引属性分开,以便进行分析和操作。
示例
输出
使用index()函数来获取实际日期
输出
正如你在输出中看到的,首先打印了核心数据,然后我们在控制台中打印了实际日期。
基本的时间序列数据操作
在这一节中,我们将讨论一些基本的操作,如基于索引的提取和两个时间间隔之间的正斜线的作用。
基于指数的提取
示例
xts类对象允许我们根据索引来提取值。让我们考虑下面的一个例子–
输出
使用正斜线(/)来创建一个区间
示例
我们可以在XTS对象的两个时间间隔之间使用正斜杠,以获得指定间隔之间的持续时间。例如,考虑下面给出的一个程序–
输出
正如你在输出中看到的,01-01-2022和01-03-2022之间的数据持续时间被打印在控制台。
我们也可以在两个时间间隔之间使用正斜线–
输出
正如你在输出中看到的,两个指定时间之间的时间间隔被打印在控制台。
合并和修改时间序列数据
语法
xts包为我们提供了merge()函数,使用该函数我们可以将一个xts对象与另一个索引上的对象连接起来,或者将一个包含日期的向量与一个xts对象连接起来。这个函数的语法如下
第一个参数等于你要合并的对象。第二个参数是要执行的连接的类型。第三个参数是fill,指定如何处理NA值,它是一个可选的参数。
例子。执行内部连接
示例
现在让我们考虑一个程序,在两个含有日期元素的xts类对象之间执行一个内部连接,即
输出
同样地,我们可以执行左外连接和右外连接。
例子。执行外连接和右外连接
示例
现在我们将看到一个演示两个xts类对象的全外连接的程序–
输出
例子。执行全外层连接
示例
考虑一下下面的另一个程序,它也是对两个对象进行全外连接。值得注意的是,这一次我们将第三个参数 “fill = 0 “传递给merge()函数。由于这个原因,所有的NA值在输出中都将被0所取代。
输出
按时间申请和汇总
xts类还提供了endpoints()函数,我们可以用它来获取参数所提到的每个区间的最后一个观测值的位置。
示例
让我们考虑下面的一个程序,它包含所有日期在01-01-2022到10-01-2022范围内的xts对象。
输出
现在我们可以在myData上使用endpoints函数来打印周日日期(02-01-2022和09-01-2022)和终点日期(10-01-2022)。
输出
结论
在本教程中,我们讨论了如何在R中使用xts和zoo来操作时间序列数据。我们详细讨论了基本操作,合并和修改时间序列,最后,我们讨论了如何应用和汇总时间。我希望这个教程能帮助你加强你在数据科学领域的知识。