假设我们有一个数据框,其中包含属于某个组的个人,例如:在第一列中有ID,在第二列中有时间指示符,在第三列中是ID&#39 ;小组成员
Data <- data.frame(TICKER = rep(rep(c(1, 2, 3), each = 3), 2),
TIME = c(rep(2012, 9), rep(2013, 9)),
PEER = c(2, 500, 503,
1, 3, 504,
507, 508, 2,
2, 500, 503,
1, 3, 504,
507, 508, 509))
我想要实现的是,我得到第四列,其中包含指示个人是否在同一组中相互拥有的指标。也就是说,输出如下:
ID TIME PEER INDICATOR
1 2012 2 1
1 2012 500 0
1 2012 503 0
2 2012 1 1
2 2012 3 1
2 2012 504 0
3 2012 507 0
3 2012 508 0
3 2012 2 1
1 2013 2 1
1 2013 500 0
1 2013 503 0
2 2013 1 1
2 2013 3 0 [since individual 3 does not have individual 2 anymore]
2 2013 504 0
3 2013 507 0
3 2013 508 0
3 2013 509 0
实现这一目标的最简单方法是什么?
谢谢:)
答案 0 :(得分:1)
这是一个快速的双线技巧:
row_match <- apply(Data, 1, function(dr) paste0(sort(dr), collapse="_"))
Data$INDICATOR <- as.numeric(duplicated(row_match) | duplicated(row_match, fromLast = T))
> Data
TICKER TIME PEER INDICATOR
1 1 2012 2 1
2 1 2012 500 0
3 1 2012 503 0
4 2 2012 1 1
5 2 2012 3 1
6 2 2012 504 0
7 3 2012 507 0
8 3 2012 508 0
9 3 2012 2 1
10 1 2013 2 1
11 1 2013 500 0
12 1 2013 503 0
13 2 2013 1 1
14 2 2013 3 0
15 2 2013 504 0
16 3 2013 507 0
17 3 2013 508 0
18 3 2013 509 0