11
votes

Quelqu'un peut-il m'aider à écrire un cadre de données R en tant que jeu de données SAS?

in r, j'ai utilisé la fonction écriture.foreign () forte> de la bibliothèque étrangère forte> à l'autre afin d'écrire une trame de données en tant que jeu de données SAS.

write.foreign(df = test.df, datafile = 'test.sas7bdat', codefile = 'test.txt', package = "SAS")


0 commentaires

4 Réponses :


8
votes

Je ne suis pas une grande partie d'un utilisateur SAS, mais j'ai utilisé wreck.xport () avant et ça a fonctionné bien. Ma compréhension brute est qu'il existe deux types de fichiers SAS, des fichiers internes et des fichiers XPort. Les Xport sont celles qui sont plus compatibles entre différentes versions, architectures, etc.


2 commentaires

Initialement, quand j'ai essayé écrire.xport (), j'ai rencontré le même message d'erreur. Mais lorsque j'ai changé l'extension de fichier de 'SAS7BDAT' en "XPT", cela a fonctionné comme un charme. Merci de votre aide.


@Jubbles: Great, content que cela ait fonctionné. Les extensions (surtout sous Windows) peuvent être une douleur. Ils sont nécessaires mais pas suffisant la plupart du temps.



13
votes

écrire.forign avec option package = "sas" écrit un fichier texte délimité par des virgules, puis crée un fichier de script avec des instructions SAS pour la lire. Vous devez exécuter SAS et soumettre le script pour activer le fichier texte en jeux de données SAS. Votre appel devrait ressembler davantage à xxx

notez l'extension différente. En outre, écrire.foreign écrit des variables de facteur comme variables numériques avec un format contrôlant leur apparence - c'est-à-dire la définition R d'un facteur. Si vous voulez juste la représentation de caractères, vous devrez convertir les facteurs via as.Character avant d'exporter.


4 commentaires

+1 Pour la meilleure meilleure réponse, mais ne devrait-il pas être datafile = "test.sas7bdat" ?


@Matt: non, datafile est le nom du fichier texte écrit. Si vous souhaitez spécifier le nom de l'ensemble de données SAS que SAS créera à partir de ce fichier texte, vous devez utiliser l'argument dataName ("rdata" par défaut par défaut, aucune extension).


HUH - Je pensais qu'il fallait avoir l'extension .Sas7bdat et je l'ai fait il y a quelques jours seulement. Lors de l'inspection de plus près, tout ce que j'avais été un fichier CSV avec une extension .SASS7BDAT, que SAS a complètement ignoré. Merci pour la clarification.


Ceci est une façon de manipuler cela. Le seul inconvénient que j'ai trouvé personnellement est que l'instruction infilière que r produit à lire dans le fichier CSV ne fonctionne pas dans SAS, par exemple pour SAS 9 si vous exécutez SAS OFF d'un serveur. Donc, dans mon cas, il tente de lire le fichier que je crée à partir du serveur plutôt que de ma machine locale qui est gênante. Je n'ai pas encore trouvé de solution de contournement, mais si je le faisais, je serai sûr de partager ici.



-1
votes

Vous pouvez le faire facilement avec SAS: il suffit d'avoir un test avec SAS / IML (Proc iml) ou Imlplus (version orientée objet) avec SAS / IML Studio.

Voir ceci: http://support.sas .com / Documentation / CDL / EN / IMLSSTAT / 63827 / HTML / Parfait / Viewer.htm # Imlsstat_statr_sect004.htm

ou télécharger gratuitement SAS / IML Studio: http://www.sas.com/apps/demosdowloads/92_sdl_sysdep.jsp ? PackageID = 000721 ​​ Cette version de SAS / IML Studio fournit la capacité d'interface avec la langue R.


3 commentaires

Sauf s'il existe des fonctionnalités dans le SAS / IML Studio pour convertir un objet R (le premier lien que vous avez fourni des fonctionnalités de documents de SAS TO R), comme une trame de données, sur un objet de fichier de données SAS (ou son équivalent fonctionnel), je sens que vous raté le point de ma question. Je voulais convertir une trame de données R en format utilisable par SAS. Pour vous donner contexte, je suis à l'aise et préférez beaucoup à SAS, mais de nombreux collègues préfèrent SAS et doivent utiliser mes données.


@Jubbles: IML / IML Studio peut convertir dans les deux directions: SAS TO R et R vers SAS.


@Hong OOI: Merci! Je garderai cela à l'esprit lorsque vous travaillez avec mes collègues SAS.



0
votes

Ceci est une modification de la réponse de Hong OOI.

en r:

bibliothèque (étranger)

écrire.forign (df = test.df, datafile = "test.csv", codefile = "test.sas", package = "sas")

en SAS:

Téléchargez les fichiers test.csv et test.sas. Open test.sas. Vous devrez peut-être modifier le code TEST.SAS qui est émis de la fonction Write.ForeIgn. Ce qui a fonctionné pour moi met à jour la ligne infilière pour inclure la bibliothèque / l'emplacement: "/ home / kristenmae0 / test.csv"


0 commentaires