使用“for every row”和列表中的列名<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />大家好
我正在研究一种清理用户生成的表的方法,但遇到了一个问题:代码编译正确,但不起作用
我有一个表,其中的数字和名称均未知列(读取:多个、变量、用户手写)。
我想执行一个简单的标准化,比如说消除不需要的空格和大写错误的值。
所以我生成一个包含列名的列表,放置一个循环并为其中的每一行放置一个。
它可以编译,但不起作用。有什么建议吗?代码在这里
user_page = open("\user\page.csv", labels(1));
full_list = user_page <<获取列名称(字符串);
对于 (i=1,i
sclmn =“:”||完整列表;
对于每一行(sclmn = 修剪(sclmn));
对于每一行(sclmn = 小写(sclmn));
);
我尝试了几种变体,使用列引用而不是字符串,或使用 Eval(),但都无法编译。 这是唯一可以编译的布局,但仍然不起作用。 有人可以帮助我理解为什么吗?
回复:使用“对于每一行”和列表中的列名根据《JMP 脚本编写指南》:“始终在列引用上使用下标来访问列单元格中的值。” 这似乎是最佳实践,尽管也有例外,正如您指出的那样,它可以在没有方括号的情况下工作。
回复:使用“对于每一行”和列表中的列名谢谢,第二种方法有效。 (我更喜欢这个,因为我使用相同的列表来做其他事情)
我在发布之前尝试了column()方式,但是如果没有[],它就不起作用
我还查看了调试器,它被正确地跟踪为列引用而不是字符串,但我仍然不明白为什么它需要 []。如果您使用硬连线版本,比如说
对于每一行(:update_01 =修剪(:update_01));
它可以在没有 [] 的情况下工作,在我看来,帮助或书籍中没有任何参考文献......
不管怎样,现在可以了。谢谢你!
回复:使用“对于每一行”和列表中的列名诀窍是让 JMP 将 sclmn 识别为列。 在当前脚本中 sclmn 只是一个字符串。 此外,ForEachRow() 通常需要在列变量之后有一个空索引 [ ]。
有两种方法可以做到这一点:
从列名称列表中:
完整列表=用户页面<<获取列名称() ;
为了(我= 1 ,我<= N 项(完整列表) ,我++,
斯库姆=完整列表[我] ;
对于每一行(斯库姆[] =修剪(斯库姆[] ) ) ;
对于每一行(斯库姆[] =小写(斯库姆[] ) ) ;
) ;
或者从字符串形式的列名称列表中:
完整列表=用户页面<<获取列名称(细绳) ;
为了(我= 1 ,我<= N 项(完整列表) ,我++,
斯库姆=柱子(完整列表[我] ) ;
对于每一行(斯库姆[] =修剪(斯库姆[] ) ) ;
对于每一行(斯库姆[] =小写(斯库姆[] ) ) ;
) ;