R 将查询输出转换为 table

R convert query output to table

R 编程新手。 我有一个简单的 sql 服务器查询,其输出如下所示:

EFFECTIVE_DATE  NumberOfUser
 2015-07-01         564
 2015-07-02         433
 2015-07-03         306
 2015-07-04         50

以下是我发出查询的方式:

 barData <- sqlQuery(sqlCon, 
                     "select EFFECTIVE_DATE,COUNT(USER_ID) as NumberOfUser from UserTable where start_dt between '20150701' AND '20150704' group by EFFECTIVE_DATE order by EFFECTIVE_DATE")

现在我是 运行 来自 R 的这个查询,并想对此做一个条形图。最好的方法是什么?

另外,如何将任何查询结果转换为 data.table 以便我可以绘制条形图?当我尝试 table(myList) 时,它显示的是完全不同的格式。

假设您在 R 中使用了 sqldf 包,sql 形式的 SELECT EFFECTIVE_DATE, NUM_OF_USERS FROM USERTABLE 查询将使用 sqldf(x, stringsAsFactors = FALSE,...) 语句执行:

sql_string <- "select
          effective_date
         , num_of_users
          from USRTABLE"

user_dates <- sqldf(join_string,stringsAsFactors = TRUE)

导致 data.frame 对象。使用 data.table 包将数据框转换为数据 table:

user_dates <- as.data.table(user_dates)

将使用 sqldf 语句创建新数据框 user_dates。 sqldf 语句至少需要一个带有 SQL 操作的字符串。 stringsAsFactors 参数将强制分类变量具有 class 字符而不是因子。

EDIT :真诚的道歉,没有看到你在问题中说明包名。如果您决定使用 sqldf 包,创建条形图是对 barplot(height, ...) 函数的直接调用:

barplot(user_dates$num_of_users,names.arg=user_dates$effective_date)

另请注意,sql成功执行查询的结果是数据框而不是列表:

On success, a data frame (possibly with 0 rows) or character string. On error, if errors = TRUE a character vector of error message(s), otherwise an invisible integer error code -1 (general, call odbcGetErrMsg for details) or -2 (no data, which may not be an error as some SQL statements do return no data).

sqlQuery上的帮助(我一般不使用ODBC)说返回"On success, a data frame…"。那意味着你应该能够做这样的事情:

barplot(barData$NumberOfUser, names.arg=barData$EFFECTIVE_DATE,
        xlab="Effective Date", ylab="Number of Users")

但是将 dput(barData) 的输出发布到您的问题中确实可以更轻松地帮助您。