楼主: jzhyue
2985 15

[其他] 求助:简化代码和编码方式 [推广有奖]

  • 2关注
  • 3粉丝

副教授

34%

还不是VIP/贵宾

-

威望
0
论坛币
410 个
通用积分
450.8068
学术水平
60 点
热心指数
59 点
信用等级
48 点
经验
10631 点
帖子
455
精华
0
在线时间
1109 小时
注册时间
2005-12-31
最后登录
2024-2-24

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
各位老师,请帮忙将以下代码简化一下
replace `stssl'= "α" if `ntssl'==36
replace `stssl'= "β" if `ntssl'==37
replace `stssl'= "γ" if `ntssl'==38
replace `stssl'= "δ" if `ntssl'==39
replace `stssl'= "ε" if `ntssl'==40
replace `stssl'= "ζ" if `ntssl'==41
replace `stssl'= "η" if `ntssl'==42
replace `stssl'= "θ" if `ntssl'==43
replace `stssl'= "λ" if `ntssl'==44
replace `stssl'= "μ" if `ntssl'==45
replace `stssl'= "ξ" if `ntssl'==46
replace `stssl'= "π" if `ntssl'==47
replace `stssl'= "ρ" if `ntssl'==48
replace `stssl'= "φ" if `ntssl'==49
replace `stssl'= "ψ" if `ntssl'==50
replace `stssl'= "ω" if `ntssl'==51
二维码

扫码加我 拉你入群

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

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

关键词:replace place TSS LAC STS replace

沙发
sungmoo 发表于 2011-12-22 17:46:29 |只看作者 |坛友微信交流群
先有一个问题:Stata支持希腊字母吗?
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
aolei + 1 + 1 + 1 观点有启发

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

使用道具

藤椅
jzhyue 发表于 2011-12-23 08:54:43 |只看作者 |坛友微信交流群
sungmoo 发表于 2011-12-22 17:46
先有一个问题:Stata支持希腊字母吗?
stata对希腊字母的支持与对汉字的支持是一样的.
用loca 可能要简化一些:
loca abc "α β γ δ ε ζ η θ ι κ λ μ ν ξ ο π ρ σ τ υ φ χ ψ ω "
token `abc'
forval i=1/24{
replace `stssl'="``i''"  if `ntssl'==`i'+35
}

使用道具

板凳
sungmoo 发表于 2011-12-23 19:09:22 |只看作者 |坛友微信交流群
foreach i in α β γ δ ε ζ η θ ι κ λ μ ν ξ ο π ρ σ τ υ φ χ ψ ω{
loc n=`n'+1
replace `stssl'="`i'"  if `ntssl'==`n'+35
}
已有 2 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
dxystata + 20 好的意见建议
jzhyue + 1 + 1 + 1 观点有启发:谢谢!

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

使用道具

报纸
dxystata 发表于 2011-12-24 16:43:45 |只看作者 |坛友微信交流群
简单测试了一下!
set obs 100
gen x=""
foreach i in α β γ δ ε ζ η θ ι κ λ μ ν ξ ο π ρ σ τ υ φ χ ψ ω {
loc n=`n'+1
replace x="`i'"  if _n==`n'+35
}

使用道具

地板
jzhyue 发表于 2011-12-24 20:47:58 |只看作者 |坛友微信交流群
/*  要处理的问题是这样的:
将一位或两位纯数字(0 1 2 3 ... 10 11 12 ...99)编码方式转化成统一的一位编码,{实际上是为了扩容,将十进制转化为百进制(不完全是,没有凑成100个字母)}
数据中大于50的数字很少,大部分是基于0到9的数字,一部分是10-40的数字,基于此就采用了这种一一对应的编码方式。(60-99的数字没有找到对应编码)
*/

  1. clear
  2. set obs 100
  3. gen y=_n-1
  4. gen x=cond(y<=35,cond(y<10,string(y),char(y+55)),"")
  5. loca a "α β γ δ ε ζ η θ ι κ λ μ ν ξ ο π ρ σ τ υ φ χ ψ ω"
  6. token `a'
  7. forv i=1/24{
  8. replace x="``i''"  if y==`i'+35
  9. }
复制代码


不知到哪位有更好的编码方式?请不吝赐教!

使用道具

7
sungmoo 发表于 2011-12-25 08:08:36 |只看作者 |坛友微信交流群
直接借助char()即可吧?

使用道具

8
jzhyue 发表于 2011-12-25 19:18:47 |只看作者 |坛友微信交流群
sungmoo 发表于 2011-12-25 08:08
直接借助char()即可吧?
基本的 ASCII 字符集共有 128 个字符,其中有 96 个可打印字符,包括常用的字母(26个大写和26个小写字母)、数字(10个)、标点符号等,另外还有 32 个控制字符。如果用字母和数字表示,另大写字母和小写字母易混且一个函数就可以转换,因此对于字母只采用大写字母,可用编码只有36个,这样只能表示成36进制,类似于车牌号的表示。后来考虑到希腊字母却在stata中占用两个字母的位数,因此也是不宜采用的。

使用道具

9
sungmoo 发表于 2011-12-25 20:23:12 |只看作者 |坛友微信交流群
*试一下
forv i=0/255{
di char(`i')
}

使用道具

10
sungmoo 发表于 2011-12-25 20:25:13 |只看作者 |坛友微信交流群
标点符号类为什么不可以作编码呢?

使用道具

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

本版微信群
加好友,备注jltj
拉您入交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-28 21:04