楼主: 卓德啊涵
4525 11

[数据管理求助] stata如何让某一列数据里面的数据最后两位数都变为0 [推广有奖]

  • 2关注
  • 4粉丝

已卖:23份资源

博士生

39%

还不是VIP/贵宾

-

威望
0
论坛币
432 个
通用积分
368.0179
学术水平
2 点
热心指数
3 点
信用等级
2 点
经验
19037 点
帖子
132
精华
0
在线时间
419 小时
注册时间
2020-2-29
最后登录
2025-9-8

楼主
卓德啊涵 在职认证  学生认证  发表于 2021-7-31 16:21:48 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
stata如何让某一列数据里面的数据最后两位数都变为0数据如下:
  1. [CODE]
  2. * Example generated by -dataex-. To install: ssc install dataex
  3. clear
  4. input float var1
  5. 12300
  6. 12400
  7. 12500
  8. 12156
  9. 25678
  10. 78900
  11. 45600
  12. 14500
  13. 14500
  14. 12300
  15. 12300
  16. 12412
  17. 12300
  18. end
复制代码

------------------ copy up to and including the previous line ------------------

Listed 13 out of 13 observations

[/code]其中大部分数据后两位是0,有一部分后两位不是0。不需要四舍五入,直接让后两位数变成00就行。请问怎么操作啊?
二维码

扫码加我 拉你入群

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

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

关键词:Stata tata 两位数 observations observation

回帖推荐

zdlspace 发表于4楼  查看完整内容

这应该有很多种方法,我再给两种简洁的方案

沙发
卓德啊涵 在职认证  学生认证  发表于 2021-7-31 21:38:05
刚在网上搜到不错的解决办法把数值型转成字符型,然后截取字符型数字,截取完成后变成数值型
  1. tostring var1 ,g(var1_zifu) format(%04.0f)          //将数值型代码转化成字符型数据
  2.   gen var1_zifu_jiequ=substr( var1_zifu ,1,3)         //保留字符型数据前三位
  3.   destring var1_zifu_jiequ ,gen(var1_shuzhi)          //将数值型代码转化成字符型数据
  4.   gen var1_result=var1_shuzhi*100                      //最后乘以100,相当于补上最后两个0
复制代码


藤椅
xqk932975 发表于 2021-7-31 23:39:39
  1. gen            v = int(var1/100)
  2. replace v = v*100
复制代码
已有 1 人评分论坛币 收起 理由
卓德啊涵 + 5 观点有启发

总评分: 论坛币 + 5   查看全部评分

板凳
zdlspace 学生认证  发表于 2021-8-1 00:32:24
卓德啊涵 发表于 2021-7-31 21:38
刚在网上搜到不错的解决办法把数值型转成字符型,然后截取字符型数字,截取完成后变成数值型
这应该有很多种方法,我再给两种简洁的方案
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input float var1
  4. 12300
  5. 12400
  6. 12500
  7. 12156
  8. 25678
  9. 78900
  10. 45600
  11. 14500
  12. 14500
  13. 12300
  14. 12300
  15. 12412
  16. 12300
  17. end

  18. //第一种方案
  19. replace var1=var1-mod(var1,100)

  20. //第二种方案
  21. replace var1=int(var1/100)*100

  22. list

  23.     +-------+
  24.      |  var1 |
  25.      |-------|
  26.   1. | 12300 |
  27.   2. | 12400 |
  28.   3. | 12500 |
  29.   4. | 12100 |
  30.   5. | 25600 |
  31.      |-------|
  32.   6. | 78900 |
  33.   7. | 45600 |
  34.   8. | 14500 |
  35.   9. | 14500 |
  36. 10. | 12300 |
  37.      |-------|
  38. 11. | 12300 |
  39. 12. | 12400 |
  40. 13. | 12300 |
  41.      +-------+
复制代码
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
小杨直溜A + 1 + 1 + 1 精彩帖子

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

报纸
zdlspace 学生认证  发表于 2021-8-1 00:38:54
卓德啊涵 发表于 2021-7-31 21:38
刚在网上搜到不错的解决办法把数值型转成字符型,然后截取字符型数字,截取完成后变成数值型
这个方案有问题哦,楼主只是举了一个例子,可能数据中既有5位数,还有6位数,还有四位数,此时得到的结果就是错的哟,看一个例子
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input float var1
  4. 4412300
  5. 12400
  6. 12500
  7. 12156
  8. 25678
  9. 78900
  10. 45600
  11. 4100
  12. 14500
  13. 412300
  14. 12300
  15. 412412
  16. 12300
  17. end



  18. tostring var1 ,g(var1_zifu) format(%04.0f)
  19. gen var1_zifu_jiequ=substr(var1_zifu,1,3)
  20. destring var1_zifu_jiequ,gen(var1_shuzhi)
  21. gen var1_result=var1_shuzhi*100

  22. list
  23.     +-----------------------------------------------------+
  24.      |    var1   var1_~fu   var1_~qu   var1_s~i   var1_r~t |
  25.      |-----------------------------------------------------|
  26.   1. | 4412300    4412300        441        441      44100 |
  27.   2. |   12400      12400        124        124      12400 |
  28.   3. |   12500      12500        125        125      12500 |
  29.   4. |   12156      12156        121        121      12100 |
  30.   5. |   25678      25678        256        256      25600 |
  31.      |-----------------------------------------------------|
  32.   6. |   78900      78900        789        789      78900 |
  33.   7. |   45600      45600        456        456      45600 |
  34.   8. |    4100       4100        410        410      41000 |
  35.   9. |   14500      14500        145        145      14500 |
  36. 10. |  412300     412300        412        412      41200 |
  37.      |-----------------------------------------------------|
  38. 11. |   12300      12300        123        123      12300 |
  39. 12. |  412412     412412        412        412      41200 |
  40. 13. |   12300      12300        123        123      12300 |
  41.      +-----------------------------------------------------+
复制代码
已有 1 人评分论坛币 学术水平 热心指数 收起 理由
卓德啊涵 + 5 + 1 + 1 精彩帖子

总评分: 论坛币 + 5  学术水平 + 1  热心指数 + 1   查看全部评分

地板
罗润万(|Toby) 学生认证  发表于 2021-8-1 01:29:09 来自手机
卓德啊涵 发表于 2021-7-31 16:21
stata如何让某一列数据里面的数据最后两位数都变为0数据如下:

------------------ copy up to and incl ...
直接用floor函数替换就可以了<br>
replace  xx=100*floor(xx/100)
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
MarryW + 1 + 1 + 1 热心帮助其他会员

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

7
卓德啊涵 在职认证  学生认证  发表于 2021-8-1 08:42:08
罗润万(|Toby) 发表于 2021-8-1 01:29
直接用floor函数替换就可以了
replace  xx=100*floor(xx/100)
哈哈哈,还是你这简单啊,学到了

8
zdlspace 学生认证  发表于 2021-8-1 11:45:09
卓德啊涵 发表于 2021-8-1 08:42
哈哈哈,还是你这简单啊,学到了
我的方案不简洁么

9
卓德啊涵 在职认证  学生认证  发表于 2021-8-1 12:47:45
zdlspace 发表于 2021-8-1 11:45
我的方案不简洁么
抱歉,上午没看到您发的[cry]

10
卓德啊涵 在职认证  学生认证  发表于 2021-8-1 12:49:45
zdlspace 发表于 2021-8-1 00:38
这个方案有问题哦,楼主只是举了一个例子,可能数据中既有5位数,还有6位数,还有四位数,此时得到的结果 ...
你们的方法都好简单,非常感谢

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

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