楼主: xixi221zmw
9324 25

急问:遇到一个关于计算标准差的难题 [推广有奖]

11
xixi221zmw 发表于 2011-8-31 16:01:00
liuxb 发表于 2011-8-31 15:25
*1. if group=1…k and data is long form:

capture drop sd
capture drop sd
qui gen sd=.
local nloop=250-125+1

qui sum sid
local nsid=r(max)

forvalue k=1(1)`nsid'{
    local istart=(`k'-1)*250+1
    local iend=(`k'-1)*250+`nloop'
        
    forvalue i=`istart'(1)`iend' {
        qui sum rpercent if _n>=`i' & _n<=125+(`i'-1)
        qui replace sd=r(sd) if _n==`i'
    }
}


把变量换成我要处理的,报告语法无效(invalid syntax)

12
xixi221zmw 发表于 2011-8-31 16:02:42
xixi221zmw 发表于 2011-8-31 15:47
出手好快啊!!先谢谢!!!马上试试
还是不行哦。。。。。。。。。

13
liuxb 发表于 2011-8-31 16:30:54
程序运行没有错误。
把你的数据传上来看看!

14
xixi221zmw 发表于 2011-8-31 16:48:14
是不是因为有的数据不是250?

15
liuxb 发表于 2011-8-31 17:15:56
1. invalid syntax 是因为你的数据sid不是数值型变量;
2. 我编的程序是根据每组有250观察,需要循环126次, 如果一组观察个数小于126,那么在保存的结果中会重迭,造成结果错误。

16
xixi221zmw 发表于 2011-8-31 17:17:37
liuxb 发表于 2011-8-31 17:15
1. invalid syntax 是因为你的数据sid不是数值型变量;
2. 我编的程序是每组必须有250观察,否则结果不对。 ...
哦~~那我把sid转成数值型

17
xixi221zmw 发表于 2011-8-31 17:25:41
liuxb 发表于 2011-8-31 17:15
1. invalid syntax 是因为你的数据sid不是数值型变量;
2. 我编的程序是每组必须有250观察,否则结果不对。 ...
谢谢!!下午从你的两个程序了学到很多。THANKS!

18
xixi221zmw 发表于 2011-9-1 09:55:37
liuxb 发表于 2011-8-31 17:15
1. invalid syntax 是因为你的数据sid不是数值型变量;
2. 我编的程序是根据每组有250观察,需要循环126次 ...
我把程序改成下面的:
capture drop sd

.
. qui gen sd=.

.
. local nloop=242-121+1

.
.
.
. qui sum sid

.
. local nsid=r(max)

.
.
.
. forvalue k=1(1)`nsid'{
  2.
.     local istart=(`k'-1)*242+1
  3.
.     local iend=(`k'-1)*242+`nloop'
  4.
.         
.
.     forvalue i=`istart'(1)`iend' {
  5.
.         qui sum rpercent if _n>=`i' & _n<=121+(`i'-1)
  6.
.         qui replace sd=r(sd) if _n==`i'
  7.
.     }
  8.
. }

每组都是242个观测值,sid已经转成了int型,在11.2SE上跑,没显示错误,但是一直运行不出结果。。。。已经快半小时了。  麻烦你再帮我看看吧,必须是250个观测值?不胜感激!!!

19
xixi221zmw 发表于 2011-9-1 09:57:26
liuxb 发表于 2011-8-31 17:15
1. invalid syntax 是因为你的数据sid不是数值型变量;
2. 我编的程序是根据每组有250观察,需要循环126次 ...
结果出来了 正确。谢谢大牛

20
xixi221zmw 发表于 2011-9-1 11:46:09
liuxb 发表于 2011-8-31 17:15
1. invalid syntax 是因为你的数据sid不是数值型变量;
2. 我编的程序是根据每组有250观察,需要循环126次 ...
再请教一个问题,我用函数对r计算了sd后,用replace值付给另一个变量V,再用函数对p计算sd,为何这时V的值全部变成缺省值了呢?

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

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