下午好。我正在嘗試將一列拆分為三列,然後將原始列中的一部分字符串放入三列中的一列基於文本的上下文。我知道文本到列會基於一些定界符來解析字符串,但是,這並不能完全滿足我的需要。我需要一個函數來讀取文本,檢查某些關鍵字(年,月或日),然後在適當的列中放置一部分字符串(“年”,“月”或“天”之前的數值) 。 我看到word()函數可以外推第一個單詞或值,這將是一個開始,但隨後仍需要根據文本將值放在三個可能的列之一中。 有人對如何編寫代碼有想法嗎?或可能解決方法的想法?非常感謝任何見解。
附帶的示例中,第1列以當前格式顯示數據,第2-4列為理想狀態。謝謝!
斯蒂芬妮
這是處理此問題的一種方法
Names Default To Here( 1 );
dt = New Table( "Example dt",
Add Rows( 10 ),
Set Header Height( 46 ),
New Column( "Age",
Character,
"Nominal",
Set Selected,
Set Values(
{"2-day old", "43-day old", "3-day old",
"3-month old", "4-month old", "5-day old",
"32-day old", "13-year old", "10-year old",
"10-month old"}
)
)
);
dt << New Column( "AgeYears" );
dt << New Column( "AgeMonths" );
dt << New Column( "AgeDays" );
For( i = 1, i <= N Rows( dt ), i++,
Match( Word( 2, :Age[i], "- " ),
"day",
:AgeDays[i] =
Num( Word( 1, :age[i], "- " ) ),
"month",
:AgeMonths[i] =
Num( Word( 1, :age[i], "- " ) ),
"year",
:AgeMonths[i] =
Num( Word( 1, :age[i], "- " ) )
)
);太好了,謝謝@txnelson !此代碼將大大減少我清理數據所需的時間,非常感謝您的答复。 快速提問:有沒有辦法將新變量直接嵌入到現有dt中,而不是創建一個新變量然後合併回原始dt?
斯蒂芬妮