美文网首页
Stata提取字符间之字符

Stata提取字符间之字符

作者: 哈桑_73bc | 来源:发表于2020-04-28 20:59 被阅读0次

场景

  • 下图数据为受访者平均每周加班时长。基于研究目的,需将其换算为小时数。
   +------------------+
   | id          time  |
   |------------------ |
1. |  1   4小时12分钟   |
2. |  2    5小时3分钟   |
3. |  3   6小时45分钟   |
4. |  4   16小时3分钟   |
   +------------------+

思路

  • 将数据中的小时数分钟数分别提取出来,进而通过公式计算。例如,个体1的加班时长为4+12/60=4.2小时
  • 但如何分别提取小时数和分钟数呢?或许读者会认为用 substr(s,n1,n2)不就行了吗?
  • 真的是这样吗?笔者注意到,部分个体的小时数只有个位,而有的个体的小时数却有两位数,那么参数n2是输入2,还是4呢?显然,简单地使用substr()达不到目的。

如下为笔者的尝试

  • 导入数据
clear 
input str5 id str20 time
1 4小时12分钟
2 5小时3分钟
3 6小时45分钟
4 16小时3分钟
end
  • 删除“分钟”字符串
gen time1 = subinstr(time,"分钟","",.)
list id time time1
     +----------------------------+
     | id          time     time1 |
     |----------------------------|
  1. |  1   4小时12分钟   4小时12  |
  2. |  2    5小时3分钟    5小时3  |
  3. |  3   6小时45分钟   6小时45  |
  4. |  4   16小时3分钟   16小时3  |
     +----------------------------+
  • 提取小时数 hour
egen hour = ends(time1),punct("小")   //提取字符“小”之前的字符
list id time time1 hour
     +-----------------------------------+
     | id          time     time1   hour |
     |-----------------------------------|
  1. |  1   4小时12分钟   4小时12      4  |
  2. |  2    5小时3分钟    5小时3      5  |
  3. |  3   6小时45分钟   6小时45      6  |
  4. |  4   16小时3分钟   16小时3     16  |
     +-----------------------------------+
  • 提取小时数 minute
egen minute = ends(time1),punct("时") last  //提取字符“时”之后的字符
list id time time1 hour minute
     +--------------------------------------------+
     | id          time     time1   hour   minute |
     |--------------------------------------------|
  1. |  1   4小时12分钟   4小时12      4       12  |
  2. |  2    5小时3分钟    5小时3      5        3  |
  3. |  3   6小时45分钟   6小时45      6       45  |
  4. |  4   16小时3分钟   16小时3     16        3  |
     +--------------------------------------------+
  • 计算加班时长 overtime
destring hour ,gen(hour1) float force   //转换变量类型
destring minute ,gen(minute1) float force
gen overtime = hour1+minute1/60
list id time time1 hour minute overtime

     +-------------------------------------------------------+
     | id          time     time1   hour   minute   overtime |
     |-------------------------------------------------------|
  1. |  1   4小时12分钟   4小时12      4       12        4.2  |
  2. |  2    5小时3分钟    5小时3      5        3       5.05  |
  3. |  3   6小时45分钟   6小时45      6       45       6.75  |
  4. |  4   16小时3分钟   16小时3     16        3      16.05  |
     +-------------------------------------------------------+

  • 这是笔者在实践中遇到的问题,如果您有更好的解决方案,欢迎在下方留言。

相关文章

  • Stata提取字符间之字符

    场景 下图数据为受访者平均每周加班时长。基于研究目的,需将其换算为小时数。 思路 将数据中的小时数和分钟数分别提取...

  • A002. Stata中字符型变量生成数值型变量

    Stata中字符型变量生成数值型变量 stata中在将纯字符型变量(如A,B,A1)生成新的数值型变量(只能生成,...

  • 2-2 shell字符串处理

    计算字符串长度 输出结果 66 输出结果 66 提取字符串 1 ${字符串变量:提取位置:提取长度} 输出结果l...

  • 字符串常用方法

    slice(): 返回字符串中提取的子字符串。 substring(): 提取字符串中介于两个指定下标之间的字符。...

  • iOS Swift 基础类型转换相关

    1 字符串截取 1.1 提取单个字符: 1.2 截取前三个字符: 1.3 截取后三个字符: 1.4 提取多个字符:...

  • C++学习笔记(八)String类型(下)

    1、提取子字符串 函数substr可以提取string字符串中的子字符串,该函数有两个参数,第一个参数为需要提取的...

  • Python find和rfind查找字符出现的索引并取出字符

    背景:想取出某个字符串中的一部分。该字符有一定特征:一些字符间有符号'-',可以借助这些特征来提取字符。本文介绍f...

  • 复习

    字符串方法:substring(indexStart,indexEnd)substring()从提取的字符inde...

  • cut修建小能手

    eg:指定提取第3个字符cut -d 3 test.txt eg:指定提取第3个字符之前所有字符cut -d -3...

  • 【叔小生】JavaScript进阶篇

    如何插入JSJS基础语法语法、函数、方法提取字符串substring()substring() 方法用于提取字符串...

网友评论

      本文标题:Stata提取字符间之字符

      本文链接:https://www.haomeiwen.com/subject/wbtcehtx.html