SQL Server R服务 - 将结果作为字符而不是因子进行查询

时间:2017-10-20 12:31:41

标签: sql-server r sql-server-2016

我正在使用SQL Server R服务,我正在使用查询填充@ input_data_1。当列为varchar时,结果数据帧默认为factor。如何获得结果作为字符数据类型?

已存储的程序

CREATE PROCEDURE myProc
AS
EXEC sp_execute_external_script
@language = N'R'
,@script=N'
df <- InputDataSet
x <- str(df)
OutputDataSet <- as.data.frame(x)
'
@input_data_1 = N'SELECT * FROM MyTable'
--will result in factor data type for both col1 and col2.

MyTable的

col1 (varchar) | col2 (varchar)
-------------------------------
     text1     |   text4
     text2     |   text5
     text3     |   text6

1 个答案:

答案 0 :(得分:1)

这是一个可以重现的答案。

如果您可能有多列,并且不想单独更改它们,则需要使用应用功能。

在下面的示例中,我创建了一个表df1(以字符串作为字符),将字符转换为因子(df2),然后在df3中将它们转换回来(这是您感兴趣的部分)。

library(tidyverse)
df1 <- tribble(~col1, ~col2,
               "text1", "text2",
               "text3", "text6",
               "text1", "text2"
)

df2 <- as.data.frame(sapply(X = df1, FUN = as.factor))

df3 <- as.data.frame(sapply(X = df2, FUN = as.character), stringsAsFactors=FALSE)