Ich habe an dieser Funktion gearbeitet, die versucht, alle Haushalte mit mindestens einem von LA zu erhalten. Wenn ich das Paket data.table verwende, ist es möglich, die Funktion mit guten Ergebnissen hochzuladen und auszuführen, aber aufgrund von Speicherproblemen benutze ich postgreSQL und hier wird das Problem.R und postgreSQL Tabellenoperation
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
Dann werden die Lese (Werke) ...
eine PostgreSQL-Instanz erstellen und eine Verbindung erstellen.
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')
Dann hier habe ich versucht, mit einem LA alle Haushalte zu erhalten. (Das Teil funktioniert, wenn ich USA mit fread Funktion von data.table pckg lesen, aber hier ist der Code für die SQL-Anweisung)
USA <- tbl(mig_db, sql('SELECT * FROM namerica'))
paises.n <- fread('paises.csv',header=T, sep=',', data.table=F)
paises <- paises.n$code
Hier ist das Problem, die Funktion eine logische Vektor zurückgibt (logische (0)) für USA $ latino:
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,]