<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Estoy intentando abrir un conjunto de archivos de texto de una carpeta y concatenar los datos en un archivo, con el nombre del archivo de texto como una de las columnas.
He adjuntado un código que abre todos los archivos de texto en una carpeta seleccionada. Sin embargo, no puedo crear la columna con el nombre del archivo.
¿Alguien puede ayudar en un script para insertar datos (valores) en una columna de una tabla de datos?
gracias
gowri
También puedes hacerlo con este script que es una alteración de
// Saltar a secuencias de comandos JMP
//Por: Wendy Murphrey y Rosemary Lucas
// http://www.sas.com/apps/pubscat/bookdetails.jsp?catid=1&pc=61733
//Página 122, Soultion 5.16
Para incorporar el nombre del archivo fuente.
También un hilo aquí.
También incorporé algunas cosas de la respuesta de MS. MS, no pude usar su script para finalizar la concatenación.
mypath = "C:\jmp\";
Set Current Directory( mypath );
y = Files In Directory( mypath );
For( i = N Items( y ), i > 0, i--,
If( Ends With( y[i], "txt" ),
,
Remove From( y, i )
)
);
n = N Items( y );
For( i = 1, i <= N Items( y ), i++,
sname=left(y[i],length(y[i])-4);
/* If the file is the first in the list, open it. Otherwise, open the table, concatenate with the main table, and close the table just opened. */
If( i == 1,
mainDt = Open( mypath || y[i] );
mainDt << New Column ("source", character, set each value ( sname )),
dt = Open( mypath || y[i] ) ;
dt << New Column ("source", character, set each value ( sname ));
mainDt = mainDt << Concatenate( dt, Append to First Table );
Close( dt, NoSave );
Wait( 0 );
)
);
/* Give the final table a name. */
mainDt<< Set Name( "Concatenated Files" );
Esto debería funcionar (extracto editado de su guión)
nombre = Izquierda ( y [ 1 ] , Longitud ( y [ 1 ] ) - 4 ) ;
Abierto (
"C:jmp\" || y [ i ] ,
columnas ( Número de cuenta = Personaje , . = Omitir ) ,
Importar ajustes (
Fin de la línea ( CRLF , CR , LF ) ,
Fin del campo ( Coma ) ,
Cotizaciones de tira ( 1 ) ,
Utilice el apóstrofe como comillas ( 0 ) ,
Escanear todo el archivo ( 1 ) ,
Etiquetas ( 0 ) ,
Nombres de columnas Inicio ( 1 ) ,
Inicios de datos ( 1 ) ,
Líneas para leer ( Todo ) ,
Regla del año ( "10-90" )
)
) << Nueva columna ( "fuente" , personaje , establecer cada valor ( nombre ) ) ;
El único cambio es la ubicación y el código dentro de Nueva columna().
Pero también puedes usar la opción "Crear columna de origen" de Concatenate() en lugar de agregar una nueva columna a cada tabla.
Pruebe el siguiente script. un enfoque alternativo a este problema que también permite que la funcionalidad incorporada de Concatenate() maneje la columna de origen.
mi camino = "C:\jmp" ;
y = Archivos en el directorio ( mi camino ) ;
//eliminar todos los archivos que no sean de texto de y
Para ( i = N artículos ( y ) , i > 0 , i --,
Si ( Termina con ( y [ i ] , "TXT" ) ,
,
Eliminar de ( y , i )
)
) ;
norte = N artículos ( y ) ;
//Hacer la lista y1 de expresiones open()
y1 = {} ;
Para ( i = 1 , i <= norte , i ++,
y1 [ i ] = Analizar gramaticalmente (
Insertar evaluación (
"Abrir(miruta||\!"^y ^\!",columnas(Núm de cuenta = Carácter, . = Omitir ),
Importar ajustes(
Fin de línea (CRLF, CR, LF),
Fin del campo (coma),
Cotizaciones de tira( 1 ),
Utilice el apóstrofe como comillas (0),
Escanear el archivo completo (1),
Etiquetas( 0 ),
Nombres de columna Inicio( 1 ),
Inicios de datos( 1 ),
Líneas para leer (todas)
))"
)
)
) ;
// (Abrir y) Concatenar archivos
evaluar ( y1 [ 1 ] ) << Concatenar (
Lista de evaluación ( y1 [ 2 :: norte ] ) ,
Crear columna de origen
) ;
//Cerrar subarchivos
Para ( i = 1 , i <= norte , i ++,
Cerca ( Tabla de datos ( y [ i ] ) , guardar )
) ;