从 R 连接到 SQL 数据库有很多不同的方法。我个人最喜欢的是这个RODBC
包。
从RODBC
,您可以使用该sqlQuery()
函数将SQL
查询传递给各种数据库,前提是它们接受 ODBC 连接。
下面的代码将加载RODBC
库,分配一个名为的连接con
并使用该连接从名为 的表中选择所有记录MyTable
。
library(RODBC) ###Load library
con <- odbcConnect("POC") ###Assign database connection
sqlQuery(con, "select * from MyTable")
对于您当前的问题,我将使用tablesample
SQLServer 2005 及更高版本上可用的功能。有很多方法可以做到这一点,但下面通过内部连接将表连接到自身的子查询(即 50% 样本)。
查询看起来像这样:
select distinct
rnd.UserID, TransID
from MyTable
join (select UserID
from MyTable
tablesample (50 percent)) rnd
on rnd.UserID = MyTable.UserID
order by rnd.UserID
您可以通过sqlQuery()
以下方式:
sqlQuery(con,
"select distinct
rnd.UserID, TransID
from MyTable
join (select UserID
from MyTable
tablesample (50 percent)) rnd
on rnd.UserID = MyTable.UserID
order by rnd.UserID")
这应该会为您提供 50% 的用户 ID 伪随机样本,MyTable
其中TransID
包含给定UserID
.