下午好。我正在尝试将一列拆分为三列,然后将原始列中的一部分字符串放入三列中的一列基于文本的上下文。我知道文本到列会基于一些定界符来解析字符串,但是,这并不能完全满足我的需要。我需要一个函数来读取文本,检查某些关键字(年,月或日),然后在适当的列中放置一部分字符串(“年”,“月”或“天”之前的数值) 。 我看到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?
斯蒂芬妮