Stata 如果单个观察符合面板数据中的标准,则删除整个受试者
我有一些表格的面板数据Stata 如果单个观察符合面板数据中的标准,则删除整个受试者,stata,panel-data,Stata,Panel Data,我有一些表格的面板数据 id | amount ----------- 1 | 10 1 | 10 1 | 100 2 | 10 2 | 15 2 | 10 3 | 100 我想做的似乎应该是相当简单的,但我对Stata的经验有限,我习惯于用类似C/Java的语言编程。基本上,如果某个人的观察值超过某个数量,我想删除整个人(id)。假设我将这个值设置为50,我想删除id1和id3中的所有观察值,这样数据将只包含id2中的观察值 Java中的伪代码将相当简单 for(int i =
id | amount
-----------
1 | 10
1 | 10
1 | 100
2 | 10
2 | 15
2 | 10
3 | 100
我想做的似乎应该是相当简单的,但我对Stata的经验有限,我习惯于用类似C/Java的语言编程。基本上,如果某个人的观察值超过某个数量,我想删除整个人(id
)。假设我将这个值设置为50,我想删除id
1和id
3中的所有观察值,这样数据将只包含id
2中的观察值
Java中的伪代码将相当简单
for(int i = 0; i < dataset_length; i++) {
if dataset[i].amount > 50 {
int drop_id = dataset[i].id;
for(int j = 0; j < dataset_length; j++) {
if dataset[j].id == drop_id {
delete observation
}
}
}
}
for(int i=0;i50{
int drop_id=dataset[i].id;
对于(int j=0;j
与此类似的Stata等价物是什么?我肯定错过了一些东西,使它变得比应该的更复杂,但我无法理解 如果金额上没有遗漏,这只是
bysort id (amount) : drop if amount[_N] > 50
如果有遗漏,那么
gen ismissing = -missing(amount)
bysort id (ismissing amount): drop if amount[_N] > 50 & amount[_N] < .
gen ismissing=-缺失(金额)
bysort id(ismissing amount):如果amount[\N]>50和amount[\N]<,则删除。
这将是一种检查,尽管很难看出这些信息是如何有趣或有用
这里的机制(对于一个介绍,请参见)实际上构建在标识符上的循环中,并构建在每个标识符的观察上。使用主流编程语言的模型进行直译只会导致代码更长、效率更低 如果金额上没有遗漏,这只是
bysort id (amount) : drop if amount[_N] > 50
如果有遗漏,那么
gen ismissing = -missing(amount)
bysort id (ismissing amount): drop if amount[_N] > 50 & amount[_N] < .
gen ismissing=-缺失(金额)
bysort id(ismissing amount):如果amount[\N]>50和amount[\N]<,则删除。
这将是一种检查,尽管很难看出这些信息是如何有趣或有用
这里的机制(对于一个介绍,请参见)实际上构建在标识符上的循环中,并构建在每个标识符的观察上。使用主流编程语言的模型进行直译只会导致代码更长、效率更低 太棒了,这个效果很好。也谢谢你的pdf,它肯定会帮助我更好地理解STATA。太棒了,这非常有效。也谢谢你的pdf,它确实帮助我更好地理解STATA。