【问题标题】:R sqldf renaming a field in a select statementR sqldf重命名选择语句中的字段
【发布时间】:2016-04-12 01:22:33
【问题描述】:

根据要求将问题编辑得更清楚。

请注意,输入在最后的注释中以可重复的形式提供。

我正在使用 sqldf 在 R 中加入两个数据集

代码返回一个带有原始列名的数据集,忽略 select 语句中的“as”。

output_1 <- sqldf("SELECT a.MRN, a.TestDate, b.TestDate as Date2 
from     a     
inner join b 
on a.MRN=b.MRN order by a.MRN, a.TestDate")

给予:

> sapply(output_1,colnames)
$MRN
NULL

$TestDate
NULL

$TestDate
NULL

> head(output_1)
    MRN   TestDate   TestDate
1 10013 2013-09-10 2014-05-20
2 10013 2013-09-10 2014-05-20
3 10013 2013-09-10 2014-05-20
4 10013 2013-09-10 2014-11-18
5 10013 2013-09-10 2015-05-19
6 10013 2013-10-15 2014-05-20

知道为什么,或者如何在输出中获得正确的字段名称吗?

我开发的一种解决方法是在使用内部连接调用之前在第二个数据集 (b) 中重命名 TestDate。但我更喜欢让“as”像在其他应用程序中一样工作。

有什么想法吗?

请注意,我只关注列名。谢谢!

注意:这里是ab的可复制形式:

Lines_a <- "MRN   TestDate
10013 2013-09-10
10013 2013-10-15
10013 2013-11-19
10013 2014-05-20
10013 2014-11-18
10051 2010-02-10"
a <- read.table(text = Lines_a, header = TRUE)

Lines_b <- "MRN   TestDate
10013 2014-05-20
10013 2014-05-20
10013 2014-05-20
10013 2014-11-18
10013 2015-05-19
10051 2010-05-26"
b <- read.table(text = Lines_b, header = TRUE)

【问题讨论】:

  • 请出示头像aboutput_1
  • 我按预期获得了这些列:MRN, TestDate, Date2
  • 那么似乎是本地问题。知道为什么我的机器上会发生这种情况吗?我应该寻找什么?

标签: sql r sqldf


【解决方案1】:

假设您使用的是 H2 数据库(如果加载了 RH2 包就会出现这种情况),那么我能够重现问题中的输出。它可能代表 H2 中的错误。尝试使用 sqlite 来代替 (i) 不加载 RH2 或 (ii) 如果已加载或 (iii) 如果这两种方法都不可取,则使用 sqldf(..., drv = "SQLite")

这里我们展示了我们可以在加载 RH2 的情况下重现问题中显示的输出:

library(RH2)
library(sqldf)

output_1 <- sqldf("SELECT a.MRN, a.TestDate, b.TestDate as Date2
from     a     
inner join b 
on a.MRN=b.MRN order by a.MRN, a.TestDate")

给予:

> head(output_1)
    MRN   TestDate   TestDate
1 10013 2013-09-10 2014-05-20
2 10013 2013-09-10 2014-05-20
3 10013 2013-09-10 2014-05-20
4 10013 2013-09-10 2014-11-18
5 10013 2013-09-10 2015-05-19
6 10013 2013-10-15 2014-05-20

【讨论】:

  • 谢谢!我在没有加载 RH2 的情况下运行了脚本,并且输出没有问题。非常感谢!
  • 你是怎么想出来的?!
  • 它无法用 SQLite 复制,所以这似乎是下一个尝试。
猜你喜欢
  • 2011-12-03
  • 2021-04-28
  • 1970-01-01
  • 1970-01-01
  • 2021-03-26
  • 1970-01-01
  • 1970-01-01
  • 2021-08-27
  • 2021-09-10
相关资源
最近更新 更多