我对R有一个基本的了解,主要是需要运行回归和汇总统计的能力,所以如果我的知识中出现任何差距,我会感谢被指向正确的方向。
我有CSV格式的时间序列数据,格式如下:
Facility ID, Utility Type, Account No, Unit Name, Date 1, Date 2, Date 3, Date 4
引用唯一实用程序类型和工具的特定帐号将有多行(即,单元名称= L的一行条目,单元名称= USD的一行条目)。在每个“日期”列中输入每个日期的特定单位的帐号值。我希望能够编写一个脚本,使我能够重新导出数据,其中每个Date列不包含多个单元的条目。我还想指定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
答案 0 :(得分:0)
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
功能打破了广泛的"格式(具有未定义的列数)到" long"格式,其中每行是观察。这实际上是你在R中做的大多数事情的首选格式,至少在使用packages from the "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()