46410 19

[数据管理求助] stata中如何实现将观测值个数生成新变量? [推广有奖]

  • 4关注
  • 0粉丝

已卖:5份资源

副教授

35%

还不是VIP/贵宾

-

威望
0
论坛币
34 个
通用积分
9.9508
学术水平
3 点
热心指数
15 点
信用等级
3 点
经验
7159 点
帖子
224
精华
0
在线时间
1423 小时
注册时间
2013-3-26
最后登录
2026-1-15

楼主
~面朝大海~ 发表于 2013-6-29 19:11:31 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
大家好,我想请问一下,面部数据中,根据样本(id)和观测期(t)生成一个新变量number,其内容是每个样本的观测期个数,在stata中如何实现啊?比如,如下图,如何用stata命令生成变量number变量的内容啊?

id

t

number

1

1991

3

1

1992

3

1

1993

3

2

1991

2

2

1992

2

3

1991

1



我通过by id: count if t <. 命令只能算出各个id的观测个数,但不知道怎么将这些观测个数形成新的变量。我也尝试写了如下命令,

foreach id {

  by id: count if t <.

  egen number=r(N)

  }

但stata显示 invalid syntax,呵呵。
二维码

扫码加我 拉你入群

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

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

关键词:Stata 如何实现 tata 观测值 新变量 invalid number count 如何 样本

本帖被以下文库推荐

沙发
h3327156 发表于 2013-6-29 19:48:18
inp id t
1 1991
1 1992
1 1993
2 1991
2 1992
3 1991
end

*方法一:
bys id: g number=_N

*方法二:
duplicates t id, g(number)
replace number=number+1

*方法三:
xtset id t
tsspell, f(L.t == .)
bys id: egen number=max(_seq)

*方法四:【这个比较像楼主原本的】
bys id:egen number=count(id<.)
已有 5 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
1149621054clb + 5 + 5 + 5 + 5 精彩帖子
sakiny136 + 2 + 2 + 2 精彩帖子
鹊桥仙子 + 5 + 4 + 4 + 4 总结得非常好,第一次查到这么现成的答案。
宋佳佳 + 5 + 1 + 1 精彩帖子
SpencerMeng + 20 + 1 + 1 + 1 我很赞同

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

藤椅
qiaqiao 发表于 2013-6-30 15:28:51
方法一最简单,常用

板凳
~面朝大海~ 发表于 2013-6-30 16:04:09
h3327156 发表于 2013-6-29 19:48
inp id t
1 1991
1 1992
h大哥威武,帮我解决了大问题,第一个方法和第四个简单,也容易理解,中间两个貌似有点复杂。十分感谢啊

报纸
~面朝大海~ 发表于 2013-6-30 16:49:02
qiaqiao 发表于 2013-6-30 15:28
方法一最简单,常用
喔,我比较初级,连常用的都不曾知道

地板
冰冻的鸭梨 发表于 2014-4-11 16:55:06
h3327156 发表于 2013-6-29 19:48
inp id t
1 1991
1 1992
在输入命令之前必须写入“inp id t”吗?为什么stata显示“orgn_code already defined”。
我遇到的问题是:每户中有N个成员,我知道每个成员的年龄,怎样算出每个住户中大于18岁的有几个人,怎样像这个帖子一样生成新的变量。尝试了命令bys  orgn_code:egen number=count( age>17 ),算出的结果并不正确啊,求大侠解答啊

7
angelqii 发表于 2014-4-22 11:28:37
如果样本量发生了变化,比如我删除了id=1的某个观测案例,现在id=1的案例数量只有两个,运用第一种方法产生的count/number的值还是3,而不是2。后面几种方法也都是生成一个变量,原理与方法一基本一致。如何使得count的值随观测案例的变化而变化啊?是不是在生成该变量时使用某个函数进行赋值。。。

8
angelqii 发表于 2014-4-22 11:30:12
我试一下方法四。

9
angelqii 发表于 2014-4-22 11:35:43
h3327156 发表于 2013-6-29 19:48
inp id t
1 1991
1 1992
如果id是字符型变量,这个count()括号内的内容要怎么写才能数出来个数啊?小虾米一只,求指教哈。。

10
angelqii 发表于 2014-4-22 11:44:40
h3327156 发表于 2013-6-29 19:48
inp id t
1 1991
1 1992
我把我正在处理的数据中id转换为数字型试了一下方法四,发现方法四也不能够使得number的值随着观测案例个数的变化而变化。我的数据中主要是有一些重复样本,在duplicates drop后观测案例个数会发生变化,我需要数出来不同id的样本个数(比如要求为7,小于7的不符合要求),如果不符合要求我也要剔除这些样本。如果我不想在生成一个新的变量来数这个数,就以原先的number为基础,要如何定义number才能使得number的值随着不同id的样本个数变化而变化?
啊,我不知道我说清楚了没有。。。

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

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