有很多不同的方法可以從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")
對於您當前的問題,我將使用SQLServer 2005及更高版本上提供的tablesample
函數。有很多方法可以做到這一點,但是下面通過內部聯接將表加入到它自己的子查詢中(即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")
這應該讓你的用戶id從MyTable
50%的僞隨機樣本對於給定的UserID
,每個唯一的TransID
。