【发布时间】:2014-09-21 07:04:19
【问题描述】:
我正在尝试进行预测分析,其中 x 年的指标将预测 x+1 年。
我想使用 R 在 SQL 中执行相当于 UPDATE 查询的操作。如果我有这样的数据:
x <- c("Randy Watson", "Cleo McDowell", "Darryl Jenks", "Jaffe Joffer",
"Randy Watson", "Cleo McDowell", "Darryl Jenks", "Jaffe Joffer",
"Randy Watson", "Cleo McDowell", "Darryl Jenks", "Jaffe Joffer")
y <- c("2012", "2012", "2012", "2012",
"2013", "2013", "2013", "2013",
"2014", "2014", "2014", "2014")
z <- c(100, 50, 75, 0,
110, 75, 0, 25,
125, 25, 10, 50)
df <- data.frame(x, y, z)
colnames(df) <- c("Name", "Year", "Sales")
print(df)
Name Year Sales
1 Randy Watson 2012 100
2 Cleo McDowell 2012 50
3 Darryl Jenks 2012 75
4 Jaffe Joffer 2012 0
5 Randy Watson 2013 110
6 Cleo McDowell 2013 75
7 Darryl Jenks 2013 0
8 Jaffe Joffer 2013 25
9 Randy Watson 2014 125
10 Cleo McDowell 2014 25
11 Darryl Jenks 2014 10
12 Jaffe Joffer 2014 50
我希望最终输出看起来像:
print(df)
Name YearX YearX1
1 Randy Watson 100 110
2 Cleo McDowell 50 75
3 Darryl Jenks 75 0
4 Jaffe Joffer 0 25
...
如何在 R 中做到这一点?我知道如何在 SQL 中做到这一点(尽管我宁愿不使用 sqldf 除非它是最好的方法)。
谢谢。
编辑: 下面的解决方案并不是我想要的。虽然如果只有两年它可以工作,但我的数据有 10 年。我不需要 Name、Year1、Year2、Year3 等...我只需要 Name、YearX、YearX+1。抱歉,如果我对此不清楚。
【问题讨论】:
-
您当前的数据格式通常称为“长”,而您的目标称为“宽”。使用这些搜索词,this question should have you covered。
-
你如何定义“YearX”?这是该系列的第一年还是?
-
关于您的编辑,以及重点;你如何定义“YearX”?