r - 将 CSV 文件转储到 Postgres 并在 R 中读取,同时保持列数据类型
问题描述
我是 R 新手,并且正在正确地处理从 csv 文件读取到数据库的项目重构代码。
这项工作包括将 csv 文件转储到 Postgres 数据库,并修改现有的 R 脚本以从 db 表而不是 csv 文件中提取输入数据以进行后续转换
现在我遇到了一个问题,即从 dbGetQuery() 返回的数据帧列与来自 read_csv() 的原始数据帧具有不同的模式和类
由于我正在读取的数据有数百列,因此为每列显式指定模式和类并不方便。
有没有一种简单的方法可以使数据帧与旧数据帧具有相同的模式,所以我可以将现有代码应用于数据帧上的数据转换
即,当我在旧数据帧和来自 db 的新数据帧之间进行比较时,这就是我所看到的
==================================
VARIABLE CLASS.(from csv) CLASS.(from db)
----------------------------------
col1 numeric integer64
col2 numeric integer
col3 numeric integer
----------------------------------
解决方案
这通常是不可能的,因为某些 SQL 数据类型(例如 DATE、TIMESTAMP、INTERVAL)在 R 中没有等价物,而 R 数据类型因子在 SQL 中也没有等价物。根据您的 R 版本,字符串会自动转换为因子,因此使用stringsAsFactors=FALSE
.
推荐阅读
- scala - Scala语言关键字可通过导入解锁?为什么?他们是否被弃用,气馁?
- reactjs - 为什么在 react native 中使用反应导航时 route.params 在组件内部给我 undefined ?
- android - 我想在我的 Oculus Go/Quest/Quest 2 机器开启时自动启动已安装的应用程序
- javascript - 在下一个js中提交后如何清除表单?
- .htaccess - 在获取请求中从 url 中排除 php
- bash - 为什么 mailx 发送其引用文件的早期版本而不是最新版本?
- mapbox-gl-js - 使用 mapbox-gl-draw 更改模式时出错
- laravel - Laravel yajrabox - 如何添加渲染刀片文件的列?
- java - Spring Boot:如何调用“postProcessBeanFactory”并获取所需的 bean
- azure - readDocument 函数中的 documentLink 是什么?