2016-05-09 13 views
1

我一直在努力嘗試獲取至少一個來自LA的所有家庭的這個功能。當我使用包data.table時,可以上傳並運行效果良好的結果,但由於內存問題,我使用的是PostgreSQL,這就成了問題。R和postgreSQL表操作

 
    year sample serial pernum wtper relate birthyr bplctry 
    2005 8406 1244876000 3 75 4 NA 24040 
    2005 8406 1244877000 1 62 1 NA 22010 
    2005 8406 1244877000 2 67 2 NA 24040 
    2005 8406 1244878000 1 137 1 NA 24040 
    2005 8406 1244878000 2 130 2 NA 24040 
    2005 8406 1244878000 3 149 3 NA 24040 

> paises 
[1] 21080 21100 21130 22020 22030 22040 22050 22060 22070 22080 
23010 23020 23030 23040 23050 23060 23100 23110 23130 23140 

然後,閱讀(作品)...

創建一個PostgreSQL實例,並創建一個連接。

m <- dbDriver("PostgreSQL") 

con <- dbConnect(m, user="postgres", password="xxxx", dbname="IPUMS", host='localhost', port=5432) 

mig_db <- src_postgres(dbname = 'IPUMS', user = 'postgres', password = 'xxxx') 

然後,在這裏我試圖獲取所有的家庭與一個LA。 (這部分工作,如果我從data.table pckg FREAD函數read美國,但這裏是代碼的SQL語句)

USA <- tbl(mig_db, sql('SELECT * FROM namerica')) 

paises.n <- fread('paises.csv',header=T, sep=',', data.table=F) 

paises <- paises.n$code 

這裏的問題是,該函數返回一個邏輯向量(邏輯(0))的美國拉丁裔$:

USA$latino <- ifelse(USA$bplctry %in% paises, 'LA', 'otro') 

la <- USA[USA$latino == 'LA', ] 

id <- unique(la$serial) 

usa.new <- USA[USA$serial %in% id,] 

回答

0

你應該嘗試使用dbGetQuery功能在RPostgreSQL庫

dbGetQuery(con, "Select * from namerica")