2017-10-20 35 views
0

J'utilise le service SQL Server R et je remplis mon @ input_data_1 avec une requête. La donnée résultante est facteur par défaut lorsque la colonne est varchar. Comment obtenir des résultats en tant que type de données de caractères?Service SQL Server R - résultats de la requête en tant que caractère au lieu du facteur

Stored Procedure

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

Vous pouvez simplement le convertir en utilisant un caractère, serait-ce une réponse acceptable? – User632716

+0

Je pourrais mais je ne veux pas le faire un par un. Actuellement, j'ai environ 15 colonnes, et si j'ai 50 colonnes ensuite? – addicted

Répondre

1

Voici une réponse reproductible.

Si vous avez plusieurs colonnes et que vous ne souhaitez pas les modifier individuellement, vous devez utiliser une fonction d'application.

Dans l'exemple ci-dessous, je crée une table df1 (avec des chaînes comme caractères), convertis les caractères en facteurs (df2), puis les convertis (c'est la partie qui vous intéressera) en 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)