stata - 按 id 保存重复项
问题描述
我在Stata中有两个变量,id
并且price
:
id price
1 4321
1 7634
1 7974
1 7634
1 3244
2 5943
2 3294
2 5645
2 3564
2 4321
2 4567
2 4567
2 4567
2 4567
3 5652
3 9586
3 5844
3 8684
3 2456
4 7634
通常我可以使用该duplicates
命令来获取变量的重复观测值。
但是,如何创建一个新变量来保存price
for each的重复项id
?
解决方案
我没有理由认为可以duplicates
使用by:
. duplicates
无论price id
您的示例的一般配方是什么,共同检查两个变量的重复项。考虑
clear
input id price
1 4321
1 7634
1 7974
1 7634
1 3244
2 5943
2 3294
2 5645
2 3564
2 4321
2 4567
2 4567
2 4567
2 4567
3 5652
3 9586
3 5844
3 8684
3 2456
4 7634
end
. duplicates example id price
Duplicates in terms of id price
+------------------------------------+
| group: # e.g. obs id price |
|------------------------------------|
| 1 2 2 1 7634 |
| 2 4 11 2 4567 |
+------------------------------------+
. duplicates tag id price, gen(tag)
Duplicates in terms of id price
. list id price if tag , sepby(id)
+------------+
| id price |
|------------|
2. | 1 7634 |
4. | 1 7634 |
|------------|
11. | 2 4567 |
12. | 2 4567 |
13. | 2 4567 |
14. | 2 4567 |
+------------+
除此之外,我不清楚您希望看到什么输出或数据结果。
编辑作为对评论的回应,这里有两种更直接的方法。duplicates
基于这样的想法,即重复大多是不需要的;你似乎有相反的观点,在这种情况下duplicates
与你的需求是倾斜的。
* approach 1
bysort price id : gen wanted = _n == 1 & _N > 1
list if wanted
+---------------------+
| id price wanted |
|---------------------|
7. | 2 4567 1 |
15. | 1 7634 1 |
+---------------------+
* approach 2
drop wanted
bysort price id : keep if _n == 1 & _N > 1
list
+------------+
| id price |
|------------|
1. | 2 4567 |
2. | 1 7634 |
+------------+
当然,如果您想进一步复制数据(为什么?),那么在方法 1 之后
gen duplicated_price = price if wanted
为您提供一个新变量中每个重复值的副本。这是@Pearly Spencer 方法的稍微简单的等价物。
bysort price id : gen duplicated_price = price if _n == 1 & _N > 1
在一行中完成。
推荐阅读
- angular - 如何以角度修复“模块重复”
- podman - Podman 1.6 绑定挂载创建问题
- java - 在多个 JSP 页面中添加 ArrayList
- python-3.x - Celery 只重试循环中的失败请求并继续另一个
- r - 在不使用 Java 的情况下在 R 中写入文件 xlsx
- c# - 选择两个文件时,从右键单击 Windows 上下文菜单中隐藏一个选项
- django - 选择 ForeignKey 的最新条目并使用 Django ORM 作为嵌套对象返回
- java - 在运行时进程中执行“启动”
- sql-server - 存储过程中的 IF ELSE 条件以包含或排除周末数据
- postgresql - Escape \n when exporting CSV using COPY command