stata - Stata:按组保留第一次观察
问题描述
我有一个如下所示的数据集:
id firm earnings A
1 A 100 0
1 A 200 0
2 B 50 1
2 B 70 1
3 C 900 0
bys id公司,如果A == 0,我只想保留第一个观察结果,如果A == 1,我想保留所有观察结果。
我试过以下代码:
if A==0{
bys id firm: keep if _n==1
}
但是,无论 A 值是什么,此代码都会删除所有 _n>1 观察值。
解决方案
该if (conditional) {do something}
语法用于控制流而不是定义变量。正如您现在所拥有的那样,Stata 仅测试是否A==1
在第一行。尝试使用and ( &
) or or ( |
) 语句添加附加条件。尝试这个:
bys id firm: keep if (_n==1 & A==0) | A==1
推荐阅读
- node.js - 谷歌云功能可以作为后端服务器做任何事情吗?
- azure - 从 txt 文件读取并转换为托管磁盘
- facebook - 使用 CocoaPods 或 FacebookSDK 在 Flutter 中为 iOS 设置 Facebook 应用程序?
- javascript - 如何从 dijit/Editor 捕获事件?
- excel - Excel Javascript API - 连接范围或复杂范围选择
- nginx - NGINX 解析一个未配置的域,为什么?
- fortran - 什么时候需要解除数组分配?
- r - 这可以在没有循环的情况下完成吗?
- laravel - Laravel eloquent 自定义字段查询顺序
- javascript - Javascript递归嵌套比较循环