楼主: 坏半半
2394 8

[编程问题求助] 单元格内数据分割的问题求助。 [推广有奖]

  • 1关注
  • 0粉丝

硕士生

33%

还不是VIP/贵宾

-

威望
0
论坛币
29447 个
通用积分
2.7000
学术水平
2 点
热心指数
2 点
信用等级
2 点
经验
2695 点
帖子
108
精华
0
在线时间
146 小时
注册时间
2010-1-8
最后登录
2024-12-6

楼主
坏半半 发表于 2013-3-11 21:51:01 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
各位好,问题如下:
我有两列时间变量如下
date                             time
20110809                  92355
20110809                  90448                                   
20110809                  90343
20110809                  90343
20110809                  90343
20110809                  90343
20110809                  90333
20110809                  90326
20110809                  90318


如表一小部分,如第一行指2011年08月09日,09点23分55秒。


我现在想将这两列分裂成6列,分别指明年月日时分秒。如下图变为:
Y                Mon              D               H              M             S
2011           08               09             09             23           55
2011           08               09             09             04           48
.
.
.
求助应该如何操作?万分感谢!

ps: 年为09年到12年,月包含12个月, 日1-31均存在,时包含09,10,11,13,14,15,分秒各包含所有60分秒。






二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:单元格 万分感谢 time 如何操作 时间变量 年月日

沙发
zhukovasky 发表于 2013-3-11 22:02:55
用字符函数转换数值或者数值转换字符,然后用类似str之类的函数,提取你想要的即可。大致思路。stata语法忘光了
za rujina!

藤椅
坏半半 发表于 2013-3-11 22:09:09
zhukovasky 发表于 2013-3-11 22:02
用字符函数转换数值或者数值转换字符,然后用类似str之类的函数,提取你想要的即可。大致思路。stata语法忘 ...
{:3_59:}不得要领啊  可否助我个command?

板凳
坏半半 发表于 2013-3-11 23:22:32
坏半半 发表于 2013-3-11 22:09
不得要领啊  可否助我个command?
自顶

报纸
蓝色 发表于 2013-3-12 01:01:42
clear
input ///
date                     time
20110809                  92355
20110809                  90448                                   
20110809                  90343
20110809                  90343
20110809                  90343
20110809                  90343
20110809                  90333
20110809                  90326
20110809                  90318
end
des

tostring date time,replace

gen Y  =real(substr(date,1,4))
gen Mon=real(substr(date,5,6))
gen D  =real(substr(date,7,8))
gen H  =real(substr(time,1,2))
gen M  =real(substr(time,3,4))
gen S  =real(substr(time,5,6))
list

地板
蓝色 发表于 2013-3-12 01:02:15
. clear

. input ///
> date                     time

          date       time
  1. 20110809                  92355
  2. 20110809                  90448                                   
  3. 20110809                  90343
  4. 20110809                  90343
  5. 20110809                  90343
  6. 20110809                  90343
  7. 20110809                  90333
  8. 20110809                  90326
  9. 20110809                  90318
10. end

. des

Contains data
  obs:             9                          
vars:             2                          
size:            72                          
--------------------------------------------------------------------------------------------------------------
              storage  display     value
variable name   type   format      label      variable label
--------------------------------------------------------------------------------------------------------------
date            float  %9.0g                  
time            float  %9.0g                  
--------------------------------------------------------------------------------------------------------------
Sorted by:  
     Note:  dataset has changed since last saved

.
. tostring date time,replace
date was float now str8
time was float now str5

.
. gen Y  =real(substr(date,1,4))

. gen Mon=real(substr(date,5,6))

. gen D  =real(substr(date,7,8))

. gen H  =real(substr(time,1,2))

. gen M  =real(substr(time,3,4))

. gen S  =real(substr(time,5,6))

. list

     +--------------------------------------------------+
     |     date    time      Y   Mon   D    H     M   S |
     |--------------------------------------------------|
  1. | 20110808   92355   2011   808   8   92   355   5 |
  2. | 20110808   90448   2011   808   8   90   448   8 |
  3. | 20110808   90343   2011   808   8   90   343   3 |
  4. | 20110808   90343   2011   808   8   90   343   3 |
  5. | 20110808   90343   2011   808   8   90   343   3 |
     |--------------------------------------------------|
  6. | 20110808   90343   2011   808   8   90   343   3 |
  7. | 20110808   90333   2011   808   8   90   333   3 |
  8. | 20110808   90326   2011   808   8   90   326   6 |
  9. | 20110808   90318   2011   808   8   90   318   8 |
     +--------------------------------------------------+

已有 1 人评分学术水平 热心指数 信用等级 收起 理由
坏半半 + 1 + 1 + 1 热心帮助其他会员

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

7
坏半半 发表于 2013-3-12 03:56:42
蓝色 发表于 2013-3-12 01:02
. clear

. input ///
我去!还是版主威武!

8
坏半半 发表于 2013-3-12 05:02:31
蓝色 发表于 2013-3-12 01:02
. clear

. input ///
版主。。。为什么有很多时候tostring格式更替后最后一位都错的啊,比如一大部分20110901都显示成20110900,20110831都显示成20110832了啊{:3_63:}

9
坏半半 发表于 2013-3-12 05:55:58
蓝色 发表于 2013-3-12 01:02
. clear

. input ///
我自己研究了一下,不知道为什么,我将数据copy以后再复制出来有些数就变了,我在这个拷贝数据上进行的操作所以发生了数据错误。我再原始列上操作就好了。
另外,我帮版主补充一下,我看了tostring 和 substr 的help 才最后得到答案了,仅对于我这个案例:(由于time有5为和6位的区别,所以在做H的时候需要进行两步)

.tostring transaction_date, generate(date)
date generated as str8

. tostring transaction_time, generate(time)
time generated as str6

. gen Y=real(substr(date,1,4))

. gen Mon=real(substr(date,5,2))

. gen D=real(substr(date,7,2))

. gen H=0

. replace H=real(substr(time,-6,2))
(4427131 real changes made, 1527024 to missing)

. replace H=real(substr(time,-5,1)) if H==.
(1527024 real changes made)

. gen M=real(substr(time,-4,2))

. gen S=real(substr(time,-2,2))

.list date time Y Mon D H M S

.
.
.

4425776. | 20121031   143728   2012    10   31   14   37   28 |
4425777. | 20121031   143728   2012    10   31   14   37   28 |
4425778. | 20121031   143728   2012    10   31   14   37   28 |
4425779. | 20121031   143729   2012    10   31   14   37   29 |
4425780. | 20121031   143729   2012    10   31   14   37   29 |
         |----------------------------------------------------|
4425781. | 20121031   143957   2012    10   31   14   39   57 |
4425782. | 20121031    92133   2012    10   31    9   21   33 |
4425783. | 20121031    92133   2012    10   31    9   21   33 |
4425784. | 20121031   144006   2012    10   31   14   40    6 |
4425785. | 20121031    92133   2012    10   31    9   21   33 |
         |----------------------------------------------------|
4425786. | 20121031   144053   2012    10   31   14   40   53 |
4425787. | 20121031    92133   2012    10   31    9   21   33 |
4425788. | 20121031   144053   2012    10   31   14   40   53 |
4425789. | 20121031    92133   2012    10   31    9   21   33 |
4425790. | 20121031   144053   2012    10   31   14   40   53 |
         |----------------------------------------------------|
4425791. | 20121031    92133   2012    10   31    9   21   33 |
4425792. | 20121031   144053   2012    10   31   14   40   53 |
4425793. | 20121031    92133   2012    10   31    9   21   33 |
4425794. | 20121031    92133   2012    10   31    9   21   33 |
4425795. | 20121031   142728   2012    10   31   14   27   28 |
         |----------------------------------------------------|
4425796. | 20121031   142728   2012    10   31   14   27   28 |
4425797. | 20121031   142729   2012    10   31   14   27   29 |
4425798. | 20121031   144053   2012    10   31   14   40   53 |
4425799. | 20121031   144054   2012    10   31   14   40   54 |
4425800. | 20121031   144858   2012    10   31   14   48   58 |
         |----------------------------------------------------|
4425801. | 20121031   144900   2012    10   31   14   49    0 |
4425802. | 20121031   144902   2012    10   31   14   49    2 |
4425803. | 20121031   143005   2012    10   31   14   30    5 |
4425804. | 20121031   143726   2012    10   31   14   37   26 |
4425805. | 20121031   143727   2012    10   31   14   37   27 |
         |----------------------------------------------------|
4425806. | 20121031   112413   2012    10   31   11   24   13 |
4425807. | 20121031   112629   2012    10   31   11   26   29 |
4425808. | 20121031   145928   2012    10   31   14   59   28 |
4425809. | 20121031   134448   2012    10   31   13   44   48 |
4425810. | 20121031   135229   2012    10   31   13   52   29 |
         |----------------------------------------------------|
4425811. | 20121031   145939   2012    10   31   14   59   39 |
4425812. | 20121031   144534   2012    10   31   14   45   34 |
4425813. | 20121031   144944   2012    10   31   14   49   44 |
4425814. | 20121031   145344   2012    10   31   14   53   44 |
4425815. | 20121031   145631   2012    10   31   14   56   31 |
         |----------------------------------------------------|
4425816. | 20121031    94905   2012    10   31    9   49    5 |
4425817. | 20121031    91010   2012    10   31    9   10   10 |
4425818. | 20121031   144231   2012    10   31   14   42   31 |
4425819. | 20121031    93910   2012    10   31    9   39   10 |
4425820. | 20121031    93516   2012    10   31    9   35   16 |
         |----------------------------------------------------|
4425821. | 20121031   111518   2012    10   31   11   15   18 |
.
.
.
.
.

再次感谢老版主给的启示!

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-1-8 04:32