La función Word () da una salida incorrectaHola a todos,
Tengo problemas para usar la función word(). Comienzo con un .csv
por ejemplo:
columna1, columna2
0,556
0,557
0,558
-1,225
-1,226
Datafile = Load Text File (...);
line_content = Words (Datafile, "\!n");
For(nn=2, nn <= N items (line_content), nn++,
Col1_list=Word(1,line_content[nn], ",");
Col2_list=Word(2,line_content[nn], ",");
);
Las listas resultantes son:
{"0", "0", "0", "-12", "-12"}
{"556", "557", "558", "25", "26"}
por lo tanto, la función word() funciona de manera diferente si la línea comienza con un signo menos... Probé Item () y usé una cláusula Num (Word()), pero no cambia nada. También probé Word(1,Trim(line_content[nn],",")).
Estoy usando JMP 14.0.0
Gracias por adelantado
Re: La función Word () da una salida incorrectaGracias de nuevo por tus ideas. Esto también se ve bien. No tengo idea de qué cambió, pero JMP ahora importa los archivos correctamente con el script de ayer cuando publiqué la pregunta inicialmente (excepto por el error que cometí aquí en la publicación). Debe haber alguna combinación de configuración de Windows/Excel de nivel superior entre "," y "." Diferenciación decimal/punto. He configurado mis ventanas alemanas para usar el estándar americano.Re: La función Word () da una salida incorrectaNo estoy exactamente seguro de lo que está buscando ahora, pero el pequeño script a continuación se lee en su archivo .csv y devuelve las 2 listas que especificó, sin error.El único elemento que agregué fue asegurarme de que los caracteres de retorno de carro que existen en el archivo no se incluyan en los valores de las listas.
names default to here(1);
Datafile = Load Text File ("...……...\WFR1_sample1.csv");
line_content = Words (Datafile, "\!n");
// Get rid of all lines upto the Graph data
// The \!r is a Carriage Return character which is at the end of each line
line_content = remove(line_content,1,loc(line_content,"{QgWave Graphs}\!r")+1);
Col1_list = {};
Col2_list = {};
For(nn=1, nn <= N items (line_content), nn++,
insert into(Col1_list,Word(1,line_content[nn], ",\!r"));
insert into(Col2_list,Word(2,line_content[nn], ",\!r"));
);Re: La función Word () da una salida incorrectaAquí está el csv original adjunto. Hice que mi colega mirara por encima del hombro, él también lo vio... Es reproducible.
Re: La función Word () da una salida incorrectaOh, mis disculpas. Usé la expresión:
<SPAN class="token function">For</SPAN><SPAN class="token punctuation">(</SPAN>nn<SPAN class="token operator">=</SPAN><SPAN class="token number">2</SPAN><SPAN class="token punctuation">,</SPAN> nn <SPAN class="token operator"><=</SPAN> N items <SPAN class="token punctuation">(</SPAN>line_content<SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN> nn<SPAN class="token operator">++</SPAN><SPAN class="token punctuation">,</SPAN>
Col1_list[nn-1]<SPAN class="token operator">=</SPAN><SPAN class="token function">Word</SPAN><SPAN class="token punctuation">(</SPAN><SPAN class="token number">1</SPAN><SPAN class="token punctuation">,</SPAN>line_content<SPAN class="token punctuation">[</SPAN>nn<SPAN class="token punctuation">]</SPAN><SPAN class="token punctuation">,</SPAN> <SPAN class="token string">","</SPAN><SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
Col2_list[nn-1]<SPAN class="token operator">=</SPAN><SPAN class="token function">Word</SPAN><SPAN class="token punctuation">(</SPAN><SPAN class="token number">2</SPAN><SPAN class="token punctuation">,</SPAN>line_content<SPAN class="token punctuation">[</SPAN>nn<SPAN class="token punctuation">]</SPAN><SPAN class="token punctuation">,</SPAN> <SPAN class="token string">","</SPAN><SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
<SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
Cambiaré a usar la función insertar en (), que es mucho más conveniente. Gracias.
Si uso el archivo .csv de muestra que proporcionó, el código funciona.
Pero comencé a cuestionar mi salud mental y abrí los archivos .csv con diferentes editores: Bloc de notas de Windows, bloc de notas ++, Word Pad, Excel. Cada pocas ejecuciones, las columnas de datos mostradas tendrán la coma en un lugar diferente, independientemente de los programas utilizados. Nunca he visto esto antes. Podría dejar el trabajo e irme a casa.




Re: La función Word () da una salida incorrectaSu sintaxis es sospechosa para mí.No estoy seguro de cómo está creando su Col1_list y Col2_list alguna vez crearía una lista concatenada.A continuación se muestra mi modificación y se adjunta el archivo csv que utilicé.Crea las 2 listas sin error en JMP 14.1
Datafile = Load Text File (".................\test.csv");
line_content = Words (Datafile, "\!n");
Col1_list = {};
Col2_list = {};
For(nn=2, nn <= N items (line_content), nn++,
insert into(Col1_list,Word(1,line_content[nn], ","));
insert into(Col2_list,Word(2,line_content[nn], ","));
);