我想从MS导入数据,并对R中的数据应用线性回归,但我不知道如何操作来自Sql Server的数据,以便进行回归。我在sql server中的表如下所示,
Pack Cubes Name Sales
1001 1.2 A 10
1001 1.2 B 12
1002 0.9 A 8
1002 0.9 B 5
1002 0.9 C 12
1003 1.5 A 5
1003 1.5 C 10
1004 0.8 B 8
1004 0.8 C 10
1005 1.3 A 5
1005 1.3 B 8
1005 1.3 C 12如果我为回归模型操作excel中的数据,它看起来会是这样的,
Cubes A B C
1.2 10 12 0
0.9 8 5 12
1.5 5 0 10
0.8 0 8 10
1.3 5 8 12A,B,C是我的因变量,它是我的自变量。我的sql表中的包只是一个引用。我与DSN的Sql连接看起来如下(工作得很好),
library(RODBC)
myconn <- odbcConnect("sqlserver")
data <- sqlQuery(myconn,"select Cubes,Name,Sales from mytable")通过我尝试的回归(这是错误的),
summary(data)
reg<-lm(Cubes~Sales,data)
summary(reg)如何像在excel中那样操作来自sql server的数据?
发布于 2014-01-08 07:09:56
尝试整形或整形包:
wide <- reshape(data, v.names = "Sales", idvar = "Cubes",
timevar = "Name", direction = "wide")发布于 2014-01-08 07:19:30
我将使用来自dcast包的reshape2。注意,对于不存在的dcast和Sales组合,NA会导致Sales。您需要手动将其更改为0
res = dcast(df, Cubes ~ Name, value.var = 'Sales')
res[is.na(res)] = 0
res
Cubes A B C
1 0.8 0 8 10
2 0.9 8 5 12
3 1.2 10 12 0
4 1.3 5 8 12
5 1.5 5 0 10发布于 2014-01-08 07:11:02
您可以使用SQL直接以所需格式从Server获取数据,如下所示:
SELECT Cubes,
SUM(CASE WHEN Name='A' then Sales else 0 END) A,
SUM(CASE WHEN Name='B' then Sales else 0 END) B,
SUM(CASE WHEN Name='C' then Sales else 0 END) C
FROM mytable
GROUP BY Cubeshttps://stackoverflow.com/questions/20988936
复制相似问题