我正在使用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
答案 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)