Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R中的时间序列数据_R_Time Series_Data Manipulation - Fatal编程技术网

R中的时间序列数据

R中的时间序列数据,r,time-series,data-manipulation,R,Time Series,Data Manipulation,我对R有一个基本的了解,这主要需要运行回归和汇总统计的能力,因此,如果我的知识中出现任何差距,我希望能够指出正确的方向 我有CSV格式的时间序列数据,格式如下: Facility ID, Utility Type, Account No, Unit Name, Date 1, Date 2, Date 3, Date 4 特定账号将有多行,引用唯一的公用设施类型和设施,即,一行条目表示单位名称=L,一行条目表示单位名称=USD。在每个日期列中输入特定单位的账号值。我希望能够编写一个脚本,使我能

我对R有一个基本的了解,这主要需要运行回归和汇总统计的能力,因此,如果我的知识中出现任何差距,我希望能够指出正确的方向

我有CSV格式的时间序列数据,格式如下:

Facility ID, Utility Type, Account No, Unit Name, Date 1, Date 2, Date 3, Date 4
特定账号将有多行,引用唯一的公用设施类型和设施,即,一行条目表示单位名称=L,一行条目表示单位名称=USD。在每个日期列中输入特定单位的账号值。我希望能够编写一个脚本,使我能够重新导出数据,其中每个日期列不包含多个单位的条目。然后,我还要向R指定日期列表示每月的时间序列数据点,并从中进行各种时间序列分析

非常感谢您告诉我如何清理这些数据

根据要求,样本数据:

Facility ID, Facility Name, State, Utility Type, Supplier, Account No., Unit Name, 7/1/14, 8/1/14
4015, Palm Court Apts, CA, Chilled Water, PG&E, 87993, USD, 42333, 41775
4015, Palm Court Apts, CA, Chilled Water, PG&E, 87993, ton-hr, 244278, 238035
4044, 18 Sawtelle, CA, Natural Gas, Chevron, 17965, USD, 4860, 5890
4044, 18 Sawtelle, CA, Natural Gas, Chevron, 17965, M^3, 7639, 8895
示例输出:

Facility ID, Facility Name, State, Utility Type, Supplier, Account No., Quantity Consumed, Unit of Measure, Utility Bill, Currency, Date
4015, Palm Court Apts, CA, Chilled Water, PG&E, 87993, 244278, ton-hr, 42333, USD, 7/1/14
4015, Palm Court Apts, CA, Chilled Water, PG&E, 87993, 238035, ton-hr, 41775, USD, 8/1/14
4044, 18 Sawtelle, CA, Natural Gas, Chevron, 17965, 7639, M^3, 4860, USD, 7/1/14
4044, 18 Sawtelle, CA, Natural Gas, Chevron, 17965, 8895, M^3, 5890, USD, 8/1/14
melt函数将具有未定义列数的宽格式分解为长格式,其中每行都是一个观察值。这实际上是在R中执行的大多数操作的首选格式,至少在使用时是这样。特别是时间序列

但我们还没有完成。现在您有了以下结构:

Facility.ID    Facility.Name …  Date  value
       4015  Palm Court Apts X7.1.14  42333
我们必须修正目前只是字符串的日期。因为列名不能以数字开头,也不能包含空格,所以它们的前面有一个X

d.molten$Date=as.Date(d.molten$Date, "X%m.%d.%y")
现在,您的日期看起来是正确的,每个观察结果都有一行:

Facility.ID    Facility.Name …     Date  value
       4015  Palm Court Apts 2014-07-01  42333
现在我们可以很容易地绘制时间序列:

library(ggplot2)
ggplot(d.molten, 
  aes(x = Date, y = value, color = Facility.Name)) + 
  geom_point()

您应该尝试使用helpunstack,或者查看重塑2包以了解如何继续。能否在这些列中显示一些示例数据?您希望输出是什么样子的?因此,我们有一个可复制的示例谢谢@slhck,我添加了几行data@slhck,输出取决于您认为时间序列数据的最佳输出。7/1/14-USD、7/1/14吨/小时的列标题可用;但是我不会有一个列标题是一个专用的日期值。238035是一个错误,对吗?有一个专栏太多了:非常有用,谢谢!还有一个问题,如果我希望在同一行的特定数据中有与特定帐号相关的所有时间序列值,该怎么办?我将在上面发布一个示例输出。您的示例每个日期只有一个值,并且您的输出基本上与您在我的回答中应用命令得到的输出相同,只是值列被重命名为公用事业账单。同一行中的所有时间序列值[…]是否意味着为同一日期从同一帐号获取的每个值添加一个新列?这不是你的输入格式吗?我有点困惑…澄清一下,在我的输入格式中;特定日期是列标题,其中在输出中,日期成为列标题,特定日期成为行值。查看输入格式,以美元作为单位名称值的行中的每个值在以吨小时、立方米或千瓦时作为单位名称值的不同行中都有相应的消耗量值。从示例输入数据到输出,您可以看到,在一个示例中,对于帐户87993,消耗244278吨小时的成本为42333美元。在输出中,这被组织成一行。希望有帮助。
library(ggplot2)
ggplot(d.molten, 
  aes(x = Date, y = value, color = Facility.Name)) + 
  geom_point()