获取R中是否有新id组合的指示器
我正在尝试创建一个列,如果先前组合了获取R中是否有新id组合的指示器,r,dplyr,tidyverse,tidyr,R,Dplyr,Tidyverse,Tidyr,我正在尝试创建一个列,如果先前组合了unit\u id的两个值,则该列的值为1。 我的数据如下所示: dataset group_id year unit_id 1 1 1970 20 2 1 1970 10 3 1 1970 12 4 1 1970 18 5 2 1975 30 6 2 1975 10 7 2
unit\u id
的两个值,则该列的值为1。
我的数据如下所示:
dataset
group_id year unit_id
1 1 1970 20
2 1 1970 10
3 1 1970 12
4 1 1970 18
5 2 1975 30
6 2 1975 10
7 2 1975 12
8 3 1981 40
9 4 1983 20
10 4 1983 10
11 4 1983 30
12 4 1983 18
13 5 2000 40
14 5 2000 30
15 5 2000 10
ideal_dataset
group_id year unit_id new_together
1 1 1970 20 0
2 1 1970 10 0
3 1 1970 12 0
4 1 1970 18 0
5 2 1975 30 1
6 2 1975 10 1
7 2 1975 12 1
8 3 1981 40 1
9 4 1983 20 1
10 4 1983 10 1
11 4 1983 30 1
12 4 1983 18 1
13 5 2000 20 0
14 5 2000 30 0
15 5 2000 10 0
我想检查的是,对于每个组id
值,是否存在单元id
的新组合。我所说的“新”是指任何两个单位id
值的组合,这些值在年份的较低值中不存在。因此,这基本上需要按年份对我的数据进行排序
,然后检查单位id
的任何组合是否与以前的组id
组合不同。我想得到的是一个指标,如果有新的组合,则取1
,如果没有,则取0
。大概是这样的:
dataset
group_id year unit_id
1 1 1970 20
2 1 1970 10
3 1 1970 12
4 1 1970 18
5 2 1975 30
6 2 1975 10
7 2 1975 12
8 3 1981 40
9 4 1983 20
10 4 1983 10
11 4 1983 30
12 4 1983 18
13 5 2000 40
14 5 2000 30
15 5 2000 10
ideal_dataset
group_id year unit_id new_together
1 1 1970 20 0
2 1 1970 10 0
3 1 1970 12 0
4 1 1970 18 0
5 2 1975 30 1
6 2 1975 10 1
7 2 1975 12 1
8 3 1981 40 1
9 4 1983 20 1
10 4 1983 10 1
11 4 1983 30 1
12 4 1983 18 1
13 5 2000 20 0
14 5 2000 30 0
15 5 2000 10 0
在本例中,group==2
因为单元30是新的,所以取new\u-together==1
的值。group==3
因为单元40是新的,所以取new\u-together==1
的值。然后group==4也接受它,因为单元30和18还没有合并。其他组没有新的组合。
我真的很困惑,发现很难找到令人满意的解决方案。有什么想法吗?
谢谢 你能用伪代码设计算法并展示你迄今为止的尝试吗?你的要求不是很清楚。你说的“联合”是什么意思?你能再解释一下吗?为什么第8排的单元id 40不是新的?你说得对,对不起。我通过组合将单位id 30更正为1,我的意思是1)新的单位代码(未在任何较低的年份值中显示)或2)两个新单位id值的组合(例如,单位id 10和20从未在任何具有较低年份值的组中组合在一起)。这能让@user3116101更清楚吗?