楼主: dxystata
5707 10

[数据管理求助] 如何把字符变量变成numeric 变量 [推广有奖]

版主

已卖:302份资源

大师

37%

还不是VIP/贵宾

-

TA的文库  其他...

Software

中英文Ebook

R学习

威望
2
论坛币
183395 个
通用积分
15333.1475
学术水平
208 点
热心指数
271 点
信用等级
174 点
经验
298627 点
帖子
5586
精华
1
在线时间
13632 小时
注册时间
2006-6-21
最后登录
2025-12-22

初级学术勋章 初级热心勋章 中级热心勋章 初级信用勋章

楼主
dxystata 发表于 2013-11-15 21:40:08 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
变量x的取值如下:
1b.rank  
10b.rank  
100b.rank
2.rank  
3.rank  
4.rank

如何得到numeric 变量y值为
1
10
100
2
3
4
谢谢!
二维码

扫码加我 拉你入群

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

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

关键词:numeric 字符变量 Eric NUM Rank 如何

本帖被以下文库推荐

沙发
siegfriedkirche 发表于 2013-11-15 22:08:19
先取字符串中的第一串字符比如“1b.bank",中的1,使用str2num,变换成数字,然后用innumeric判断是否是数字。然后是第二个字符b,使用isstr判断。
然后第二串。
我觉得不知道正确吗。你使用matlab试试吧。

藤椅
ywh19860616 发表于 2013-11-15 22:29:59
  1. . input str20 var1

  2.                      var1
  3.   1. 1b.rank
  4.   2. 10b.rank
  5.   3. 100b.rank
  6.   4. 2.rank
  7.   5. 3.rank
  8.   6. 4.rank
  9.   7. end

  10. . destring var1 , gen(new) i(rank b)
  11. var1: characters r a n k b removed; new generated as byte

  12. . list

  13.      +-----------------+
  14.      |      var1   new |
  15.      |-----------------|
  16.   1. |   1b.rank     1 |
  17.   2. |  10b.rank    10 |
  18.   3. | 100b.rank   100 |
  19.   4. |    2.rank     2 |
  20.   5. |    3.rank     3 |
  21.      |-----------------|
  22.   6. |    4.rank     4 |
  23.      +-----------------+




复制代码
已有 3 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
SpencerMeng + 10 + 1 + 1 精彩帖子
dxystata + 40 好的意见建议
Sunknownay + 2 + 2 + 2 热心帮助其他会员

总评分: 论坛币 + 50  学术水平 + 3  热心指数 + 3  信用等级 + 2   查看全部评分

一份耕耘,一份收获。

板凳
ywh19860616 发表于 2013-11-15 22:48:55
或者
  1. egen newvar1 = sieve(var1), omit(b rank .)
  2.   gen  var2=real(newvar1)
复制代码
已有 1 人评分论坛币 收起 理由
dxystata + 20 观点有启发

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

一份耕耘,一份收获。

报纸
hplcdadong 发表于 2013-11-15 23:29:26
Another versatile method:

gen new=regexs(1) if regexm(var1,"([0-9]+)")
已有 1 人评分论坛币 收起 理由
dxystata + 40 观点有启发

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

地板
hplcdadong 发表于 2013-11-16 00:02:07
Love "egen" command by ywh19860616, it can be made a little bit simple:

egen newvar1 = sieve(var1), keep(numeric)
destring newvar1, replace

7
dxystata 发表于 2013-11-16 00:04:36
如果是
变量x的取值如下:
1b.rank1  
10b.rank1
100b.rank1
2.rank1  
3.rank1  
4.rank1

8
hplcdadong 发表于 2013-11-16 00:24:48
gen new=regexs(1) if regexm(var1,"^([0-9]+)")
destring new,replace
已有 2 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
dxystata + 20 观点有启发
ywh19860616 + 3 + 2 + 2 thanks

总评分: 论坛币 + 20  学术水平 + 3  热心指数 + 2  信用等级 + 2   查看全部评分

9
offandon 发表于 2013-11-17 00:17:41
貌似没有那么麻烦吧

10
一粒沙fight! 发表于 2013-11-17 23:44:58
好的好的

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

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