【问题标题】:Ignoring case in d(b)plyr verbs忽略 d(b)plyr 动词中的大小写
【发布时间】:2018-08-31 20:59:56
【问题描述】:

当涉及到列名时,我正在查询的数据库不区分大小写。例如以下列存在于不同的表中:

PERSONID PERSONiD PersonID Personid PersonId

使用标准的 d(b)plyr 动词变得非常令人沮丧。是否可以关闭 dbplyr 动词的区分大小写?

【问题讨论】:

  • 你用的是什么数据库平台?
  • PostgreSQL 例如以全部小写形式返回列名,而 Oracle 以全部大写形式返回它们。如果你想编写可以在任一平台上运行的代码,你就会遇到这个问题。

标签: r dplyr dbplyr


【解决方案1】:

您可以将结果的所有列名更改为与rename_all 一致的大小写。例如使它们全部小写:

rename_all(df, tolower)

【讨论】:

    【解决方案2】:

    我认为这可以通过在选择数据列时使用正则表达式来完成。

    可以在select-columns-of-data-table-based-on-regex找到一个非常相似的问题和答案。

    在您的情况下,正则表达式可能写为 [Pp][Ee][Rr][Ss][Ii][Dd]。

    【讨论】:

      【解决方案3】:

      或者您可以使用以下方法将数据框 (df) 的列名更改为小写:

       names(df) <- tolower(names(df))
      

      【讨论】:

      • 或者通过tbl(con, df) %&gt;% rename_all(toupper) %&gt;% ...启动链,但不确定是否支持
      • 是的,支持。这是docs 中的示例之一。
      猜你喜欢
      • 2014-08-03
      • 1970-01-01
      • 1970-01-01
      • 2019-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多