楼主: chase_dream
18344 18

请教:STATA变量赋值 [推广有奖]

11
jzhyue 发表于 2011-8-17 22:10:27
*设第一列标识1...n的标识变量为n
foreach i of varlist A-D{
bys n (`i'):replace `i'=`i'[1]
}

bys n:keep if _n==1
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
chase_dream + 1 + 1 + 1 热心帮助其他会员

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

12
jzhyue 发表于 2011-8-17 22:18:16
*设第一列标识1...n的标识变量为n
foreach i of varlist A-D{
tempvar ii
bys n :egen `ii'=min(`i')
replace `i'=`ii'
}
bys n:keep if _n==1

13
jzhyue 发表于 2011-8-17 22:19:13
操作失误,回帖重复

14
jzhyue 发表于 2011-8-17 22:19:26
操作失误,回帖重复

15
h3327156 发表于 2011-8-18 00:43:34
chase_dream 发表于 2011-8-17 20:53
To h3327156: 多谢你的热心帮助。那个B4是笔误,应该是Bn。抱歉实在不好表达。
To  glacierccer:谢谢,谢 ...
我总算看懂您要的是什么意思。
另外,我觉得,不知道您的方法是不是用loop来做?
当变量有很多很多个时,譬如1000个或几百个,那样会很累。
当然,glacierccer提供了相当好的思路。如果他提供的方法,您能弄成loop会更好。

我觉得利用Stata特有的矩阵mata来处理不错。【这边的例子是利用Stata12的方法来做】
首先假设您有以下的数据【A到C】 当然,您有可能数据是A1到A1000个,只要把变量名替换掉。
这边的例子是假设您所谓的n为4。

input A B C
1.2 . .
1.3 . .
1.2 . .
1.5 . .
. 1.7 .
. 1.3 .
. 1.9 .
. 2.4 .
. . 2.1  
. . 3.2
. . 4.1
. . 5.2
end

foreach v of varlist A-C{
putmata `v'=(`v') if !missing(`v')
}
drop if _n>4
foreach k of varlist A-C{
getmata `k',replace
}

结论:上述程序改成您自己的变量名,4改成您自己的n,会变地很简单

祝 研安 & 顺心

ps.不过不知道您的A变量那一列里的....是不是missiing value,如果是,那就不符合您的状况,请当作没看到此帖吧

已有 2 人评分学术水平 热心指数 信用等级 收起 理由
chase_dream + 1 + 1 + 1 热心帮助其他会员
h894510055 + 1 + 1 + 1 看不懂 学习

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

16
h3327156 发表于 2011-8-18 00:46:06
哈! 不过您要求不要用矩阵的方法,可是我用了mata
对不起罗! 以上当作废话看看就好…

17
chase_dream 发表于 2011-8-19 21:58:01
谢谢各位!!!
三人行,必有我师

18
sungmoo 发表于 2011-8-22 18:26:15
*以下列数据为例
clear
inp a b c d e
0.88350742        .        .        .        .
0.43543893        .        .        .        .
0.98123393        .        .        .        .
0.99517748        .        .        .        .
0.60560047        .        .        .        .
.        0.79299912        .        .        .
.        0.59343722        .        .        .
.        0.79867843        .        .        .
.        0.21424769        .        .        .
.        0.96690183        .        .        .
.        .        0.39162398        .        .
.        .        0.5125395        .        .
.        .        0.65869165        .        .
.        .        0.91215665        .        .
.        .        0.32598536        .        .
.        .        .        0.67634001        .
.        .        .        0.65829831        .
.        .        .        0.22050917        .
.        .        .        0.61805414        .
.        .        .        0.50287605        .
.        .        .        .        0.07270275
.        .        .        .        0.79656046
.        .        .        .        0.05312721
.        .        .        .        0.97922993
.        .        .        .        0.09325383
end

*可采用:
g g=mod(_n+4,5)
collapse a-e,by(g)
drop g

19
cathyzhyq 发表于 2017-1-30 11:45:19
interesting

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-31 09:48