行数据拆分但不拆分列标题你好
我可以打开csv文件,而不会出现以下任何问题。如何读入具有_和|的每列的第一个值分裂。我想保持列标题相同的名称,以便以后进行绘制。
我试图打开w / Data Preview以删除_或|但它也会拆分列标题。
Data: <BR />ID,Name,Country,Column1_Value,Column2_Value_More,Percent_Name_Count<BR />125480,Jack,CA,0.310_0.310_0.310_0.310_0.310_0.310_0.310_0.310,0.610|0.610|0.610|0.610|0.610|0.610|0.610|0.610,0.7<BR /><BR />Keep: <BR />ID,Name,Country,Column1_Value,Column2_Value_More,Percent_Name_Count<BR />125480,Jack,CA,0.310,0.610,0.7
csv_file = "C:/test3.csv";
Open(csv_file);
test3.csv
ID,Name,Country,Column1_Value,Column2_Value_More,Percent_Name_Count
125480,Jack,CA,0.310_0.310_0.310_0.310_0.310_0.310_0.310_0.310,0.610|0.610|0.610|0.610|0.610|0.610|0.610|0.610,0.7
125481,Jane,US,0.300_0.300_0.300_0.300_0.300_0.300_0.300_0.300,0.600|0.600|0.600|0.600|0.600|0.600|0.600|0.600,0.69
125482,Joe,BZ,0.360_0.360_0.360_0.360_0.360_0.360_0.360_0.360,0.620|0.620|0.620|0.620|0.620|0.620|0.620|0.620,0.71
125483,Jim,FR,0.340_0.340_0.340_0.340_0.340_0.340_0.340_0.340,0.640|0.640|0.640|0.640|0.640|0.640|0.640|0.640,0.73
125484,Jerry,US,0.330_0.330_0.330_0.330_0.330_0.330_0.330_0.330,0.630|0.630|0.630|0.630|0.630|0.630|0.630|0.630,0.72
125485,John,CA,0.360_0.360_0.360_0.360_0.360_0.360_0.360_0.360,0.620|0.620|0.620|0.620|0.620|0.620|0.620|0.620,0.71
谢谢。
回复:行数据拆分但不拆分列标题不知道为什么格式搞乱了。想要显示数据中的内容以及我想要保留的内容。
Data:
ID,Name,Country,Column1_Value,Column2_Value_More,Percent_Name_Count
125480,Jack,CA,0.310_0.310_0.310_0.310_0.310_0.310_0.310_0.310,0.610|0.610|0.610|0.610|0.610|0.610|0.610|0.610,0.7
Keep:
ID,Name,Country,Column1_Value,Column2_Value_More,Percent_Name_Count
125480,Jack,CA,0.310,0.610,0.7
再次感谢。
回复:行数据拆分但不拆分列标题这是使用Word()函数的非常简单的操作。 JMP具有一些非常强大的字符处理功能。 有关文档,请参见《脚本指南》和《脚本索引》。
names default to here(1);
dt=open("c:\test3.csv");
For Each Row(
:Column1_Value = word(1, :Column1_Value, "_" );
:Column2_Value_More = word(1, :Column2_Value_More, "|" );
);
dt:Column1_Value << data type(numeric);
dt:Column1_Value << modeling type(continuous);
dt:Column2_Value_More << data type(numeric);
dt:Column2_Value_More << modeling type(continuous);回复:行数据拆分但不拆分列标题吉姆
谢谢您的快速回复。如何避免对word()的特定列使用硬编码。我可以在Cols中使用for循环来动态更改_和|吗?
谢谢。
回复:行数据拆分但不拆分列标题- 给定您要提出的问题,您需要花一些时间来学习JSL的基础知识。 请花时间阅读《脚本指南》:帮助==> JMP文档库==>《脚本指南》
- 为了回答您的问题,我修改了原始脚本中的Word()函数之一,以使用动态引用
names default to here(1);
dt=open("c:\users\jim\documents\test3.csv");
myWord = 1;
myColumn = "Column1_Value";
myDelimiter = "_";
For Each Row(
:Column1_Value = word(myWord, as Column( myColumn ), myDelimiter );
:Column2_Value_More = word(1, :Column2_Value_More, "|" );
);
dt:Column1_Value << data type(numeric);
dt:Column1_Value << modeling type(continuous);
dt:Column2_Value_More << data type(numeric);
dt:Column2_Value_More << modeling type(continuous);
回复:行数据拆分但不拆分列标题吉姆
很抱歉我是新来的人,正在学习JSL。
如果我有更多的列标题,我不想对列标题名称进行硬编码,而是循环遍历以获得split _或|的第一个值。我尝试在下面尝试,但我知道我的代码已损坏。
csv_file = "C:/test3.csv";
CSV_data = Open( csv_file );
col = CSV_data << get column names( string );
nc = N Items( col );
For( i = 1, i <= nc, i++,
For Each Row(
:col[i] = Word( 1, col[i], "_" );
:col[i] = Word( 1, col[i], "|" );
);
);
ID,Name,Country,Column1_Value,Column2_Value_More,Percent_Name_Count,COL1,COL2_ABC
125480,Jack,CA,0.310_0.310_0.310_0.310_0.310_0.310_0.310_0.310,0.610|0.610|0.610|0.610|0.610|0.610|0.610|0.610,0.7,0.7,0.9_0.9
125481,Jane,US,0.300_0.300_0.300_0.300_0.300_0.300_0.300_0.300,0.600|0.600|0.600|0.600|0.600|0.600|0.600|0.600,0.69,0.7,0.9_0.9
125482,Joe,BZ,0.360_0.360_0.360_0.360_0.360_0.360_0.360_0.360,0.620|0.620|0.620|0.620|0.620|0.620|0.620|0.620,0.71,0.7,0.9_0.9
125483,Jim,FR,0.340_0.340_0.340_0.340_0.340_0.340_0.340_0.340,0.640|0.640|0.640|0.640|0.640|0.640|0.640|0.640,0.73,0.7,0.9_0.9
125484,Jerry,US,0.330_0.330_0.330_0.330_0.330_0.330_0.330_0.330,0.630|0.630|0.630|0.630|0.630|0.630|0.630|0.630,0.72,0.7,0.9_0.9
125485,John,CA,0.360_0.360_0.360_0.360_0.360_0.360_0.360_0.360,0.620|0.620|0.620|0.620|0.620|0.620|0.620|0.620,0.71,0.7,0.9_0.9
回复:行数据拆分但不拆分列标题非常接近,但是如果您查看我发送的最后一个代码,您会看到,当引用要执行的列时,我在其前面放置了一个As Column(),因此您实际需要的是
names default to here(1);
csv_file = "C:/test3.csv";
CSV_data = Open( csv_file );
col = CSV_data << get column names( string );
nc = N Items( col );
// You don't want the first 3 columns processed,
// or the last one processed, so the index values
// to be used needs to be changed to handle this
For( i = 4, i <= nc - 1, i++,
For Each Row(
as column(col[i]) = Word( 1, as column( col[i]), "_|" );
);
);