[英]Time Series Data in R
我對R有一個基本的了解,主要是需要具備運行回歸和匯總統計信息的能力,因此,如果我的知識有任何空白,我將為您指出正確的方向。
我有CSV格式的時間序列數據,其格式如下:
Facility ID, Utility Type, Account No, Unit Name, Date 1, Date 2, Date 3, Date 4
針對特定帳號的多行將引用唯一的實用程序類型和工具(即,單位名稱= L的一行條目,單位名稱= USD的一行條目)。 在每個“日期”列中輸入每個日期特定單位的帳號值。 我希望能夠編寫一個腳本,使我能夠在每個“日期”列不包含多個單位條目的情況下重新導出數據。 然后,我還要向R指定Date列代表每月的時間序列數據點,然后從中進行各種時間序列分析。
感謝您在告訴我如何清除此數據方面的幫助。
根據要求,樣本數據:
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
library(reshape2)
d = read.csv("data.csv")
d.molten = melt(d,
id.vars=c("Facility.ID", "Facility.Name", "State", "Utility.Type", "Supplier", "Account.No.", "Unit.Name"),
variable.name = "Date"
)
melt
函數將“寬”格式(具有不確定的列數)分解為“長”格式,其中每一行都是觀察值。 實際上,這是您在R中要做的大多數事情的首選格式,至少在使用“ Hadleyverse”中的軟件包時更是如此 。 特別是對於時間序列。
但是我們還沒有完成。 現在您具有以下結構:
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()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.