Stata 将秒更改为字符串

Stata 将秒更改为字符串,stata,Stata,我用这些秒表示完成每圈的时间: * 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字符串 我想我可以用命令做到这一点:

我用这些秒表示完成每圈的时间:

* 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 
然而,这给了我一些奇怪的结果


我还想对每圈跑步时间之间的差异做同样的处理。

如前所述,在这一地区,
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”)

以Stata为单位的时钟时间以毫秒为单位。这是有案可查的。因此,例如1386只能是1.386秒。