【发布时间】:2020-08-31 17:54:54
【问题描述】:
我有一个按波显示友谊关系的面板数据框。我想删除连续波中出现的友谊关系,只保留不连续的友谊关系。
我所说的非连续友谊关系是指如果 A 在时间 1 和时间 3 提名 B 作为他们的朋友,但不是时间 2。
HAVE 数据示例:
id friend wave
1 4 1
1 5 1
1 2 2
1 5 3
1 2 3
2 1 1
2 4 1
2 1 2
2 1 3
4 3 1
4 5 2
4 3 3
5 1 1
5 3 2
5 4 2
5 2 3
6 5 1
6 5 2
6 5 4
想要数据:
id friend wave
1 5 1
1 5 3
4 3 1
4 3 3
6 5 2
6 5 4
【问题讨论】:
-
啊-你是对的,修好了。谢谢!
-
您的定义不清楚。如果你有数据集
df <- tibble(id = c(6,6,6), friend = c(5,5,5), wave = c(1,2,4))- 你想保留第二行吗?它与其前身是连续的,但与其后继者不连续。 -
@DavidT 在该示例的情况下,我想保留第 2 行和第 4 行,因为 id =6 和friend = 5 没有出现在 wave = 3 中。
-
好吧,这些数据将被@RonakShaw 的
df %>% group_by(id, friend) %>% filter(n() > 1 && all(diff(wave) != 1))排除在外。我认为您正在尝试选择id、friend相同的记录对,并且wave之间存在间隙,即使这两条记录都是连续的其他记录。但是看看你的示例代码,我不确定。 -
好的,所以我在下面发布了一个替代解决方案。
标签: r dplyr time-series data-manipulation