使用RPostgreSQL将字符串作为因子导入

时间:2013-09-23 18:51:32

标签: r postgresql rpostgresql

我想从大型postgresql表导入数据。为了节省空间,我想自动将文本值转换为因子。

例如,数据集有许多字符串变量,例如(例如,“男性”,“女性”),如果这些变量可以作为因子导入,我可以使用如下命令加载数据集:

df <- dbGetQuery(con, "select id, gender from large.table"))

我没有接收像(#,“Male”)这样的行,而是想要(#,0)这样的行,以便节省内存。

如果您在自己选择的数据库上尝试以下查询,并让“gender”列等于字符列,您应该会看到df_large的大小要大得多。

df <- dbGetQuery(con, "select id, gender from large.table"))

df_large <- df$gender
print(object.size(df_large), units="Kb")

df_small <- factor(df$gender)
print(object.size(df_small), units="Kb")

1 个答案:

答案 0 :(得分:0)

两点。

首先,如果这是一个问题,那么CASE就是你的答案

 SELECT id, case when gender = male then 1::int else 0 end as is_male from large_table;

第二个是如果内存是个问题那么说实话你可能不想从large_table导入大量的行并在客户端中分析它。您可能希望在数据库中以递增方式进行分析。不知道你在做什么,很难说。但是,您可能需要查看聚合,窗口函数以及可能的PL / R.