2016-05-09 13 views
1

私はこの関数を使って、LAから少なくとも1つの世帯すべてを取得しようとしています。パッケージ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インスタンスを作成し、接続を1つ作成します。

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') 

そこで、ここで私は1つLAで全世帯を取得しようとしました。 (関数は、論理的なベクトルを返し、ここで

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

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

paises <- paises.n$code 
が問題である(その部分は、SQL文のコードを、私はdata.table pckgから関数freadで米国を読めば動作しますが、ここにあります)論理(0))USA $のラテン系のため:

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

あなたRPostgreSQLライブラリにdbGetQuery機能を使用してみてください

dbGetQuery(con, "Select * from namerica")