处理与 R 的数据库交互中的字段类型

2023-11-23

我使用 RMySQL 和 MySQL 数据库来存储我的数据集。有时数据会被修改,或者我也会将结果存储回数据库。长话短说,在我的用例中,R 和数据库之间有相当多的交互。

大多数时候我使用方便的功能,例如dbWriteTable and dbReadTable写入和读取我的数据。不幸的是,这些完全忽略了 R 数据类型和 MySQL 字段类型。我的意思是我希望 MySQL 日期字段最终以Date or POSIX班级。另一方面,我认为这些 R 类存储为某种对应的 MySQL 字段类型。这意味着日期不应该是字符 - 我不希望在这里区分浮点数和双精度数......

我也尝试使用dbGetQuery– 那里的结果相同。在阅读手册时,我是否完全错过了一些东西,或者在这些软件包中根本不可能(还)有什么东西?一个好的解决办法会是什么?

编辑:@mdsummer 我试图在文档中找到更多内容,但只发现了这些令人失望的行:`MySQL 表作为 data.frames 读入 R,但没有将字符或逻辑数据强制转换为因子。类似地,在导出 data.frames 时,因子将导出为字符向量。

整数列通常作为 R 整数向量导入,但 BIGINT 或 UNSIGNED INTEGER 等情况除外,它们被强制为 R 的双精度向量以避免截断(当前 R 的整数是有符号的 32 位量)。

时间变量作为字符数据导入/导出,因此您需要将它们转换为您喜欢的日期/时间表示形式。


好的,我现在有了一个可行的解决方案。下面是一个将 MySQL 字段类型映射到 R 类的函数。 这尤其有助于处理 MySQL 字段类型日期...

dbReadMap <- function(con,table){
    statement <- paste("DESCRIBE ",table,sep="")
    desc <- dbGetQuery(con=con,statement)[,1:2]

  # strip row_names if exists because it's an attribute and not real column
  # otherweise it causes problems with the row count if the table has a row_names col
  if(length(grep(pattern="row_names",x=desc)) != 0){
  x <- grep(pattern="row_names",x=desc)
  desc <- desc[-x,]
  }



    # replace length output in brackets that is returned by describe
    desc[,2] <- gsub("[^a-z]","",desc[,2])

    # building a dictionary 
    fieldtypes <- c("int","tinyint","bigint","float","double","date","character","varchar","text")
    rclasses <- c("as.numeric","as.numeric","as.numeric","as.numeric","as.numeric","as.Date","as.character","as.character","as.character") 
    fieldtype_to_rclass = cbind(fieldtypes,rclasses)

    map <- merge(fieldtype_to_rclass,desc,by.x="fieldtypes",by.y="Type")
    map$rclasses <- as.character(map$rclasses)
    #get data
    res <- dbReadTable(con=con,table)



    i=1
    for(i in 1:length(map$rclasses)) {
        cvn <- call(map$rclasses[i],res[,map$Field[i]])
        res[map$Field[i]] <- eval(cvn)
    }


    return(res)
}

也许这不是一个好的编程习惯——我只是不知道更好的做法。所以,使用它需要您自担风险,或者帮助我改进它......当然这只是其中的一半:reading。希望我很快就能找到时间写一个写作函数。

如果您对映射字典有建议,请告诉我:)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

处理与 R 的数据库交互中的字段类型 的相关文章

  • 如何使用 gvisMotionChart 处理 POSIXlt 格式时间?

    The googleVisR软件包出奇的好 然而 我对一个问题感到困惑gvisMotionChart关于 timevar 因为我的数据集中的时间是POSIXlt格式 例如 2009 07 02 19 00 00 2009 07 02 20
  • 在 R 中将时间从数字转换为时间格式

    我从 xls 文件中读取数据 显然 时间格式不正确 如下 举例 0 3840277777777778 0 3847222222222222 0 3854166666666667 确实 他们应该是 09 12 09 13 09 13 我不知道
  • 按钮:带滚动条的下载按钮仅下载几行

    我正在处理超过 100 000 行的表并使用DT包裹 开发版本0 1 56 在 Shiny App 中将其可视化 此外我正在使用DT扩展如下 Buttons 下载不同格式的数据 然而虽然Scroller扩展程序也已激活 我只能下载几行 不是
  • 使用 data.table 而不是 data.frame 进行子集化

    我正在处理一个包含 300 万行和 10 列的数据框 并且正在对其进行一些子集化 我下面有一些玩具代码 当我子集化时 需要很长时间 如果我使用 data table 和 data table 上的子集会更快吗 这是一些玩具代码 s lt c
  • 匹配字符串在多列上循环

    我有来自一项开放式调查的数据 我有一个注释表和一个代码表 代码表是一组主题或字符串 我正在尝试做的事情 检查代码表中相关列中是否存在开放式注释中的单词 字符串 在评论表中为特定主题添加一个新列 并添加一个二进制 1 或 0 来表示已标记哪些
  • 通过另一个函数将数据和列名称传递给 ggplot

    我将直接跳到一个示例并在后进行评论 cont lt data frame value c 1 20 variable c 1 20 1 20 1 5 1 20 2 group rep c 1 2 3 each 20 value variab
  • 将 RMarkdown 文档编织为 Word 时方程式和引用丢失

    我不确定这个问题是否更适合LaTeX论坛 我将其发布在这里是因为我怀疑问题更多是关于knitr和 RMarkdown 相比于 LaTeX 我在 RStudio 中有以下 RMarkdown 文档 title Capricious Behav
  • 聚合时间

    我的数据包含 1 分钟测量值 我希望将其聚合为 5 分钟和 10 分钟 如何在 10 分钟内将 日 列的数据分组为 5 样本数据2 structure list Day c Monday Monday Monday Monday Monda
  • R中的预测和预测函数之间的区别

    两者之间有什么区别吗predict and forecast R 中的函数 如果是 在哪些具体情况下应该使用它们 Intro predict 适用于多种 R 对象 模型 基础库的一部分 forecast 对于时间序列 预测包的一部分 参见示
  • spplot 的图例范围和颜色分布问题

    我的绘图和图例中的颜色范围是否正确存在问题 这是我使用的代码 data ch4 lt read csv2 v42 CH4 1970 TOT txt skip 3 stringsAsFactors FALSE header F num dat
  • 在ggplot2中绘制大多边形地图的小区域

    我有一个 shapefile 我使用它在 ggplot2 中进行了强化和绘制geom polygon 我怎样才能只绘制这张地图的一小部分区域 我的完整地图看起来不错 但我的小区域很混乱 这是一个工作示例 这个小形状文件可以从以下位置获得 h
  • 使用shinyjs通过javascript在闪亮的应用程序中操作现有的Leaflet地图

    我有一个闪亮的应用程序 其中包含现有的传单地图 我希望能够在渲染后使用自定义 javascript 通过shinyjs包裹 一个最小的例子如下 app R packages library dplyr library leaflet lib
  • 仅当 ggplot 中 y 轴的下限设置为 0 时才会出现图条[重复]

    这个问题在这里已经有答案了 我正在尝试创建一个条形图 当我将限制设置为 0 7 时 就会出现条形 但是 我希望下限为 1 而不是 0 当我将下限设置为 1 时 条形图不会出现 我收到以下错误消息 Removed 8 rows contain
  • 将公式传递给 R 中的函数?

    对此的任何帮助将不胜感激 我正在使用 Lumley 调查包 并试图简化我的代码 但遇到了一些小障碍 在我的代码中调用包中的 svymean 函数如下 其中第一个参数是指示我想要哪些变量的公式 第二个参数是该数据集 svymean hq eh
  • 在R中使用plotly在轴标题中换行和下标

    我刚开始使用plotly对于 R 中的一些交互式散点图 并且在轴标签上遇到困难 通常我设计我的情节ggplot2然后使用ggplotly函数来转换它们 但这有时由于某种原因非常慢 所以我想直接在中创建我的图plotly 我现在尝试更改轴标题
  • 拆分并保存在新的 data.frames 中

    我有一个大 data frame 144 列 我想将其分成每组 3 列 子文件或子 data frame 然后将子 data frame 保存在单独的文件中 换句话说 file1 将包含从 1 到 3 的列 file2 将包含从 6 到 9
  • 在另一列的字符串中搜索一列中的文本

    这里是 R 新手 一直在搜索此论坛 尝试找到一种在同一行数据的字符串中搜索文本的方法 我以前使用过 grepl 但无法让它向下查找列并对每一行应用检查 我觉得这是一个简单的解决方案 但我花了几个小时 但似乎无法得到它 基本上我有类似下面第
  • R + ggplot2 - 无法分配大小为 128.0 Mb 的向量

    我有一个 4 5MB 9 223 136 行 的文件 其中包含以下信息 0 0 0 0147938 3 67598e 07 0 0226194 7 35196e 07 0 0283794 1 10279e 06 0 033576 1 470
  • 是否有 R 函数可以将这些数据从长形重塑为宽形?

    数据现在看起来如何 Coach ID Student score 1 A 8 1 B 3 2 A 5 2 B 4 2 C 7 看起来像这样 Coach ID Student score student 2 score 2 student 3
  • C# - 命名空间内的类型声明

    在命名空间内而不是在类中声明类型的可能用途是什么 For ex namespace Test public delegate void Ispossible 这是有效的并且不会产生任何编译错误 但我无法想象为什么我们会以这种方式声明它而不是

随机推荐

  • 对于在浏览器中测试 extjs 代码(最好使用 selenium)有什么建议吗?

    我们一直在使用 selenium 来处理高级网站测试 除了模块级别的大量 python 文档测试之外 并取得了巨大成功 然而 现在我们在很多页面上使用 extjs 并且事实证明很难将 Selenium 测试纳入网格等复杂组件 有人成功为基于
  • 如何在Windows下的cmd窗口中显示日文汉字?

    我有一个英语 Windows 2003 服务器 激活了亚洲语言支持 命令窗口 cmd 设置 仅有的两种可用字体是 raster 和 lucida console 两者都无法正确显示汉字 显示为问号 有没有办法让它们显示出来 在写入控制台之前
  • 在 Delphi 中修改 Rest 服务器上的 URL

    我已经在 Delphi XE 中编写了一个 REST 服务器 使用向导 并且我想稍微更改一下 URL 这样就不用http 192 168 1 84 8080 datasnap rest TServerMethods1 GetListings
  • iOS 8.3 自定义键盘中的“UIView-Encapsulated-Layout-Width”

    我已经实现了自定义键盘 它在运行 iOS 8 2 的设备上运行良好 但是 当我在 iOS 8 3 的设备上运行相同的代码时 我收到以下警告 并且键盘的高度设置不正确 Probably at least one of the constrai
  • Protobuf-net :嵌套 IEnumerable 对象

    我正在使用 Protobuf net 序列化自定义嵌套列表 我知道原生列表不能直接嵌套 这就是为什么我使用容器对象作为内部列表 但是 我也想让我的容器对象 IEnumerable 但这意味着 Protobuf net 会抛出错误 不支持嵌套
  • Java中如何检查字符串是否只包含数字

    在 Java 的 String 类中 有一个称为 matches 的方法 如何使用此方法使用正则表达式检查我的字符串是否仅包含数字 我尝试使用下面的示例 但它们都返回错误的结果 String regex 0 9 String data 23
  • HTML/CSS。去上课吗?

    在 HTML 中 您可以使用标签 TOP 直接进入页面顶部 出于这个原因 我想也许还有可能 单击我的网页中的链接并直接转到特定的类 仅限 html csss 是否可能 不是针对特定的类 因为可以有许多元素具有相同的类名 但使用 ID 是可能
  • 在java中从dropbox下载文件

    我正在编写一个 swing 应用程序 但我确信稍后我会想到更多内容添加到其中 所以我想要一种从 dropbox 下载文件 如果是新文件 的方法 我尝试了很多不同的方法 但他们给我的只是页面的 HTML 有人知道怎么做吗 我当然不会 在我看来
  • 是否可以在同一页面上使用 2 个版本的 jQuery?

    注意 我知道已经有人问过类似的问题here and here 但我正在寻找有关如何进行这项工作的更多说明或完全避免它的充分理由 我正在向已使用旧版本 jQuery 库 1 1 3 1 的现有网站添加功能 我一直在针对最新版本的 jQuery
  • 没有这样的文件或目录错误

    这是我收到的错误 Traceback most recent call last File E stuff module py line 91 in
  • 如何停止枚举 NSAttributedString 的属性?

    在文档中enumerateAttribute据说 关于方法stop该块的参数是 该块可以将该值设置为 true 以停止对该集合的进一步处理 然而 在块内stop参数是一个let我无法将其设置为true 我需要在找到第一个属性出现后停止枚举
  • JavaScript 查找 json 值 [重复]

    这个问题在这里已经有答案了 我需要在国家 地区的 json 列表中搜索 json 是这样的 name Afghanistan code AF name land Islands code AX name Albania code AL na
  • Android RecyclerView重叠项目(卡堆栈)

    如何重叠 RecyclerView 中的项目 就像堆叠卡片一样 提前致谢 要重叠 recyclerView 行 您可以使用它 将此类添加到您的活动中 您可以自定义 vertOverlap public class OverlapDecora
  • D3 树布局可视化 - 继承具有多个父项的子项

    我是 D3 可视化的新鲜人 目前正在为数据沿袭创建 D3 树布局可视化 在数据沿袭流中 子节点可以从多个父节点派生 这是一个例子 在下面的示例中 DevLead 可能与 2 名经理一起工作 var data name Director pa
  • 如何在 Cloud Firestore 中移动文档?

    有人可以帮助我如何在 Cloud Firestore 中重命名 移动或更新文档或集合名称吗 另外 我是否可以访问我的 Cloud Firestore 以从终端或任何应用程序更新我的集合或文档 其实没有move方法允许您简单地将文档从一个位置
  • 在 Eclipse 中选择远程系统类型列表为空

    我想在 Eclipse Luna 中进行交叉编译 Windows gt Linux 但是当我想在远程系统视图中添加连接时列表为空 我已经在 Eclipse 中安装了最新的 RSE 也许我错过了一个我还不知道的重要点 这就是为什么它是空的 有
  • 如何使用 Rhino Mocks 来模拟 HttpContext.Application

    我是 Mocking 框架的新手 并开始使用 RhinoMocks 来协助我的 MVC 应用程序单元测试 我在用着Scott Hanselmanns MVC 模拟助手协助模拟 HttpContext 我已经成功地 一段时间后 模拟了一些我需
  • 在 Rails 中,如何使用视图呈现 JSON?

    假设您在 users 控制器中 并且想要获取 show 请求的 json 响应 如果您可以在 views users 目录中创建一个名为 show json 并在 users show 之后的文件 那就太好了操作完成 它呈现文件 目前您需要
  • css中direction和text-align的区别

    两者有什么区别 方向 右转 文本对齐 右对齐 相关this问题 方向从右到左对元素进行排序 Example div div style display inline block A div div style display inline
  • 处理与 R 的数据库交互中的字段类型

    我使用 RMySQL 和 MySQL 数据库来存储我的数据集 有时数据会被修改 或者我也会将结果存储回数据库 长话短说 在我的用例中 R 和数据库之间有相当多的交互 大多数时候我使用方便的功能 例如dbWriteTable and dbRe