Tengo muchos archivos en formato SAS y me gustaría poder leerlos en programas fuera de SAS. No tengo nada excepto el sistema base SAS instalado. Podría convertirlos manualmente, pero me gustaría una forma de hacerlo automáticamente.¿Cómo puedo leer un conjunto de datos SAS?
Respuesta
Necesitará tener una sesión de SAS en ejecución para actuar como un servidor de datos. A continuación, puede acceder a los datos SAS utilizando ODBC, consulte el SAS ODBC drivers guide.
Para tener el servidor local que ejecuta SAS ODBC, es necesario:
- Definir la configuración del servidor SAS ODBC al descrito en la guía de conductores SAS ODBC. En el ejemplo que sigue, me conectaré a un servidor que está configurado con el nombre "loclodbc".
Añadir una entrada en el archivo de servicios, (C: \ WINDOWS \ system32 \ drivers \ etc \ services), así:
- loclodbc 9191/tcp
... conjunto el número de puerto (aquí: 9191) para que se ajuste a su configuración local. El nombre del servicio "loclodbc" debe coincidir con el nombre del servidor tal como se define en la configuración de ODBC. Tenga en cuenta que el término "Servidor" no tiene nada que ver con el nombre de host físico de su PC.
Su servidor SAS ODBC está ahora listo para ejecutarse, pero no tiene recursos de datos asignados disponibles. Normalmente, debe configurar esto en la pestaña "Bibliotecas" en el proceso de configuración ODBC de SAS, pero dado que desea apuntar a las fuentes de datos "sobre la marcha", omitimos esto.
Desde su aplicación cliente, ahora puede conectarse al servidor ODBC SAS, señalar los recursos de datos a los que desea acceder y buscar los datos.
La manera en que SAS señala los recursos de datos es a través del concepto de "LIBNAME". Un nombre de lib es un puntero lógico a una colección de datos.
Así
LIBNAME sasadhoc 'C:\sasdatafolder';
asigna la carpeta "C: \ sasdatafolder" el mango lógica "sasiodat".
Si desde dentro SAS quiere tener acceso a los datos que residen en el archivo de la tabla de datos SAS "C: \ sasdatafolder \ test.sas7bdat", que haría algo como esto:
LIBNAME sasadhoc 'C:\sasdatafolder';
PROC SQL;
CREATE TABLE WORK.test as
SELECT *
FROM sasadhoc.test
;
QUIT;
Así que lo que necesitamos hacer es decirle a nuestro servidor SAS ODBC que asigne un nombre de libra a C: \ sasdatafolder, desde nuestra aplicación cliente. Podemos hacer esto enviando esta solicitud de asignación de recursos al inicio, utilizando el parámetro DBCONINIT.
He hecho algunos ejemplos de código para hacer esto. Mi código de muestra también está escrito en el idioma BASE SAS. Dado que obviamente hay formas más inteligentes de acceder a los datos de SAS que SAS conectándose a SAS a través de ODBC, este código solo sirve como ejemplo.
Usted debe ser capaz de tomar los bits útiles y crear su propia solución en el entorno de programación que está utilizando ...
SAS ODBC código de ejemplo de conexión:
PROC SQL;
CONNECT TO ODBC(DSN=loclodbc DBCONINIT="libname sasadhoc 'c:\sasdatafolder'");
CREATE TABLE temp_sas AS
SELECT * FROM CONNECTION TO ODBC(SELECT * FROM sasadhoc.test);
QUIT;
La magia sucede en la parte "CONNECT TO ODBC ..." del código, asignando un nombre de lib a la carpeta donde residen los datos necesarios.
En realidad, no necesita una sesión SAS en ejecución; el controlador ODBC ejecutará uno automáticamente. Sin embargo, no existe una forma fácil de crear programáticamente la configuración ODBC, por lo que debe configurarse manualmente. Lo cual es un problema, ya que no se puede cargar un conjunto de datos arbitrario. –
Por arbitrario, probablemente quiere decir "ubicado en cualquier lugar, con cualquier nombre" ...? ¿O se da como un parámetro? –
Situado en cualquier lugar, con cualquier nombre. –
Creo que es posible que pueda utilizar ADO, Consulte el SAS support site para obtener más información.
responsabilidad:
- no he mirado esto durante un tiempo
- No estoy 100% seguro de que esto no requiere licencias adicionales
- no estoy seguro de si puede hacerlo utilizando Python
que nunca he probado http://www.oview.co.uk/dsread/, pero podría ser lo que estás buscando: "una sencilla utilidad de línea de comandos para trabajar con conjuntos de datos en el formato de archivo SAS7BDAT." Pero tenga en cuenta "Este software debe considerarse experimental y no se garantiza que sea preciso. Usted lo utiliza bajo su propio riesgo. Solo funcionará en archivos SAS7BDAT de formato Windows sin comprimir por ahora."
Puede hacer un programa de conversión de SAS a CSV.
Guarde lo siguiente en sas_to_csv.sas
:
proc export data=&sysparm
outfile=stdout dbms=csv;
run;
Entonces, suponiendo que desea acceder libname.dataset
, llamar a este programa de la siguiente manera:
sas sas_to_csv -noterminal -sysparm "libname.dataset"
Los datos SAS se convierte en CSV que se pueden verter en Python. En Python, sería bastante fácil generar los parámetros "libname.dataset" programáticamente.
Ahora hay un paquete python que permitirá leer archivos .sas7bdat, o convertirlos a csv, si lo prefiere
- 1. ¿Cómo se leen los nombres de variables en un conjunto de datos SAS?
- 2. SAS puedo hacer sas observaciones de proceso al revés
- 3. ¿Cómo se imprime la última observación de un conjunto de datos SAS?
- 4. ¿Cómo puedo leer/convertir archivos de SAS Gov't Data en un MAC?
- 5. Convierta de manera eficiente un conjunto de datos SAS en un archivo CSV
- 6. Cómo detectar cuántas observaciones en un conjunto de datos (o si está vacío), en SAS?
- 7. Apertura de conjuntos de datos SAS para su visualización desde un programa .sas
- 8. ¿Cómo puedo leer datos XMP de un JPG con PHP?
- 9. ¿Cómo puedo realizar una pieza de macro para cada observación en el paso de datos sas?
- 10. ¿cómo puedo leer datos binarios en C++?
- 11. si _N_ = 1 condición devuelve cierto incluso si el conjunto de datos conjunto está vacío (cero observaciones) en SAS
- 12. ¿Cómo desarrollar un SAS PROC de terceros?
- 13. Cómo puedo convertir una tabla de datos a un conjunto de datos relacionado
- 14. ¿Cómo puedo leer datos grandes del archivo de proceso?
- 15. ¿Cómo leer csv en el conjunto de registros en numpy?
- 16. Leer datos de un medio dañado
- 17. ¿Cómo puedo emular un puerto COM, escribir datos en él y leer datos de él?
- 18. ¿Cómo puedo leer mi base de datos desde DDMS
- 19. ¿Cómo leer datos de Hbase?
- 20. Cómo leer datos de NSDocumentDirectory
- 21. ¿Cómo puedo leer un archivo .docx?
- 22. ¿Cómo puedo leer un archivo con Ruby?
- 23. sas informat datetime
- 24. ¿Cómo puedo leer y escribir datos JPEG por píxel?
- 25. Valores promedio de un conjunto de datos de punto a un conjunto de datos de cuadrícula
- 26. Cómo transportar un conjunto de datos en un archivo csv?
- 27. ¿Cómo puedo ejecutar un conjunto de archivos .SQL desde SSMS?
- 28. Rellenar un conjunto de datos o una tabla de datos de un conjunto de resultados de consultas LINQ
- 29. Uso y clasificación de la memoria SAS
- 30. ¿Cómo puedo cargar un conjunto Hibernate-mapped como un conjunto no modificable?
qué programas/formatos le gustaría leer en? ¿Con qué lenguaje de programación estarías trabajando? –
Estoy usando Python. No especifiqué un programa o formato porque no quería limitar las respuestas; si hay una forma de leer los datos a través de una DLL o una API, estoy seguro de que puedo averiguar cómo llamarlo. Pero no puedo encontrar ninguna forma de hacerlo, sin licenciar programas adicionales de SAS. –
¿Escribir una macro SAS para convertir cada cuenta como una solución automática? –