这些秒数代表每圈的完成时间:
* Example generated by -dataex-. To install: ssc install dataex
clear
input float(lap lapruntime)
1 1386
2 816
3 1835
4 2048
5 751
6 2456
7 1947
8 1640
9 2090
10 1372
end
是否可以将其更改为hours:minutes:seconds
字符串?
我想我可以用以下命令来做到这一点:
format %tcHH:MM:SS lapruntime
但是,这给了我一些奇怪的结果。
对于每个单圈跑时间之间的差异,我也想这样做。
答案 0 :(得分:2)
您似乎将format
与变量的类型混淆了,后者设置了变量的输出格式。
如果使用egen
命令:
egen slapruntime = elap(lapruntime)
replace slapruntime = substr(slapruntime, 3, .)
generate lapruntime_difference = abs(lapruntime - lapruntime[_n+1])
egen slapruntime_difference = elap(lapruntime_difference)
replace slapruntime_difference = substr(slapruntime_difference, 3, .)
您可以得到想要的东西:
list, abbreviate(25)
+---------------------------------------------------------------------------------+
| lap lapruntime slapruntime lapruntime_difference slapruntime_difference |
|---------------------------------------------------------------------------------|
1. | 1 1386 00:23:06 570 00:09:30 |
2. | 2 816 00:13:36 1019 00:16:59 |
3. | 3 1835 00:30:35 213 00:03:33 |
4. | 4 2048 00:34:08 1297 00:21:37 |
5. | 5 751 00:12:31 1705 00:28:25 |
|---------------------------------------------------------------------------------|
6. | 6 2456 00:40:56 509 00:08:29 |
7. | 7 1947 00:32:27 307 00:05:07 |
8. | 8 1640 00:27:20 450 00:07:30 |
9. | 9 2090 00:34:50 718 00:11:58 |
10. | 10 1372 00:22:52 . .:.:. |
+---------------------------------------------------------------------------------+
请注意,首先您需要安装社区贡献的 egenmore
软件包,其中包含elap()
函数。可以按照以下步骤进行操作:
ssc install egenmore
答案 1 :(得分:2)
如前所述,egen
在此地区有一个由社区提供的功能,但是最好使用官方产品并编写您自己的代码。您的示例时间都不超过60分钟,因此以一种方式获取分钟,以另一种方式获取秒会导致串联。一个小但需要的技巧是使用%02.0f
以确保通常显示的秒数少于10秒。
* Example generated by -dataex-. To install: ssc install dataex
clear
input float(lap lapruntime)
1 1386
2 816
3 1835
4 2048
5 751
end
egen wanted = elap(lapruntime)
list
+-----------------------------+
| lap laprun~e wanted |
|-----------------------------|
1. | 1 1386 0:00:23:06 |
2. | 2 816 0:00:13:36 |
3. | 3 1835 0:00:30:35 |
4. | 4 2048 0:00:34:08 |
5. | 5 751 0:00:12:31 |
+-----------------------------+
gen minutes = floor(lapruntime/60)
gen seconds = mod(lapruntime, 60)
egen WANTED = concat(minutes seconds), p(:) format(%02.0f)
list
+----------------------------------------------------------+
| lap laprun~e wanted minutes seconds WANTED |
|----------------------------------------------------------|
1. | 1 1386 0:00:23:06 23 6 23:06 |
2. | 2 816 0:00:13:36 13 36 13:36 |
3. | 3 1835 0:00:30:35 30 35 30:35 |
4. | 4 2048 0:00:34:08 34 8 34:08 |
5. | 5 751 0:00:12:31 12 31 12:31 |
+----------------------------------------------------------+
通过代码行的倒数付费的人可以想象一种在一行代码中做到的方式
strofreal(floor(lapruntime/60)) + ":" + strofreal(mod(lapruntime, 60), "%02.0f")