使用首次出现 ID 标记重复项
Tag duplicates with first occurrence ID
我正在使用 cluster
命令,但由于内存不足而遇到困难。为了解决这个问题,我想删除所有重复的观察结果。
我想通过变量 A、B 和 C 进行聚类,我这样识别重复值:
/* Create dummy data */
input id A B C
1 1 1 1
2 1 1 1
3 1 1 1
4 2 2 2
5 2 2 2
6 2 2 2
7 2 2 2
8 3 3 3
9 3 3 3
10 4 4 4
end
sort A B C id
duplicates tag A B C, gen(dup_tag)
我想添加一个变量 dup_ID
,它告诉我 id
s 2 和 3 是 id
1、id
s 5 和 6 的副本id
4个,以此类推。我该怎么做?
/* Desired result */
id A B C dup_id
1 1 1 1 1
2 1 1 1 1
3 1 1 1 1
4 2 2 2 4
5 2 2 2 4
6 2 2 2 4
7 2 2 2 4
8 3 3 3 8
9 3 3 3 8
10 4 4 4 10
duplicates
是一个很棒的命令(请参阅其手册条目以了解我为什么这么说),但您可以直接执行此操作:
bysort A B C : gen tag = _n == 1
将第一次出现的 A B C
标记为 1,将所有其他标记为 0。反之,使用 _n > 1
、_n != 1
或其他。
编辑:
那么 id
标记的观察结果就是
by A B C: gen dup_id = id[1]
有关 by:
的基本技术,请参阅(例如)this discussion
您可以在 ID
上使用下标 [1]
引用每组 A B C
中的第一个观察值。请注意 bysort
中的 (id)
参数,它按 id
排序,但仅按 A
、B
和 C
来标识组。
clear
input id A B C
1 1 1 1
2 1 1 1
3 1 1 1
4 2 2 2
5 2 2 2
6 2 2 2
7 2 2 2
8 3 3 3
9 3 3 3
10 4 4 4
end
bysort A B C (id): gen dup_id = id[1]
li, noobs sepby(dup_id)
屈服
+-------------------------+
| id A B C dup_id |
|-------------------------|
| 1 1 1 1 1 |
| 2 1 1 1 1 |
| 3 1 1 1 1 |
|-------------------------|
| 4 2 2 2 4 |
| 5 2 2 2 4 |
| 6 2 2 2 4 |
| 7 2 2 2 4 |
|-------------------------|
| 8 3 3 3 8 |
| 9 3 3 3 8 |
|-------------------------|
| 10 4 4 4 10 |
+-------------------------+
我正在使用 cluster
命令,但由于内存不足而遇到困难。为了解决这个问题,我想删除所有重复的观察结果。
我想通过变量 A、B 和 C 进行聚类,我这样识别重复值:
/* Create dummy data */
input id A B C
1 1 1 1
2 1 1 1
3 1 1 1
4 2 2 2
5 2 2 2
6 2 2 2
7 2 2 2
8 3 3 3
9 3 3 3
10 4 4 4
end
sort A B C id
duplicates tag A B C, gen(dup_tag)
我想添加一个变量 dup_ID
,它告诉我 id
s 2 和 3 是 id
1、id
s 5 和 6 的副本id
4个,以此类推。我该怎么做?
/* Desired result */
id A B C dup_id
1 1 1 1 1
2 1 1 1 1
3 1 1 1 1
4 2 2 2 4
5 2 2 2 4
6 2 2 2 4
7 2 2 2 4
8 3 3 3 8
9 3 3 3 8
10 4 4 4 10
duplicates
是一个很棒的命令(请参阅其手册条目以了解我为什么这么说),但您可以直接执行此操作:
bysort A B C : gen tag = _n == 1
将第一次出现的 A B C
标记为 1,将所有其他标记为 0。反之,使用 _n > 1
、_n != 1
或其他。
编辑:
那么 id
标记的观察结果就是
by A B C: gen dup_id = id[1]
有关 by:
的基本技术,请参阅(例如)this discussion
您可以在 ID
上使用下标 [1]
引用每组 A B C
中的第一个观察值。请注意 bysort
中的 (id)
参数,它按 id
排序,但仅按 A
、B
和 C
来标识组。
clear
input id A B C
1 1 1 1
2 1 1 1
3 1 1 1
4 2 2 2
5 2 2 2
6 2 2 2
7 2 2 2
8 3 3 3
9 3 3 3
10 4 4 4
end
bysort A B C (id): gen dup_id = id[1]
li, noobs sepby(dup_id)
屈服
+-------------------------+
| id A B C dup_id |
|-------------------------|
| 1 1 1 1 1 |
| 2 1 1 1 1 |
| 3 1 1 1 1 |
|-------------------------|
| 4 2 2 2 4 |
| 5 2 2 2 4 |
| 6 2 2 2 4 |
| 7 2 2 2 4 |
|-------------------------|
| 8 3 3 3 8 |
| 9 3 3 3 8 |
|-------------------------|
| 10 4 4 4 10 |
+-------------------------+