使用“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 項(完整列表) ,我++,
斯庫姆=柱子(完整列表[我] ) ;
對於每一行(斯庫姆[] =修剪(斯庫姆[] ) ) ;
對於每一行(斯庫姆[] =小寫(斯庫姆[] ) ) ;
) ;