0
我想要獲取與數據集中所有郵政編碼關聯的縣名。我用數據框獲得了相對較快的結果(儘管我覺得它可以做得更快),但是對於data.table,即使進行了一些優化,結果也不是這樣。有沒有辦法使用數據框架或data.tables進一步加速?兩個data.table數據集之間的快速映射
這是我的初始化(基於this answer):
library(noncensus)
data(zip_codes)
data(counties)
counties$fips <- as.numeric(paste0(counties$state_fips, counties$county_fips))
計算與數據幀(第二速度稍快,如預期) - 20 16秒時:
system.time(sapply(zip_codes$fips, function(x) subset(counties, fips == x)$county_name))
system.time(sapply(zip_codes$fips, function(x) counties[counties$fips==x,]$county_name))
計算與數據表 - 60,43秒:
zip_codes.dt <- data.table(zip_codes)
counties.dt <- data.table(zip_codes)
system.time(sapply(zip_codes.dt$fips, function(x) subset(counties.dt, fips == x)$county_name))
setkey(counties.dt, fips) # optimizing
system.time(sapply(zip_codes.dt$fips, function(x) counties.dt[.(x)]$county_name))
你的第一三分線,'$ fips',有可能在一個單一的線路與'縣獲得縣施工$ FIPS < - 相互作用(縣$ state_fips,縣$ county_fips)'。 – lmo
@lmo在因子變量的值中引入一個「。」,與'fips'的'zip_codes'中的命名不匹配。 – Naumz
'interaction'有一個sep參數設置爲「。」。作爲默認值。使用sep =「」來擺脫它。 – lmo