【发布时间】:2020-12-07 02:35:00
【问题描述】:
我有一个包含 7 波青少年友谊的网络数据集。我正在尝试获取给定二元组的长度(定向友谊)。
样本有数据:
ego alter wave
1 5 1
1 4 1
1 5 2
1 2 2
1 3 2
2 8 1
2 8 2
2 8 3
3 4 1
3 7 1
3 6 1
3 6 2
3 7 3
3 6 3
想要数据:
ego alter friendship_length
1 5 2
1 4 1
1 2 1
1 3 1
2 8 3
3 4 1
3 7 1
3 6 3
这是我已经尝试过的:
edges_wide <- edges_long %>%
select(ego, alter, wave) %>%
group_by(ego, alter) %>%
mutate(col=seq_along(ego))%>% # add a column indicator
spread(key=col, value=wave)
这给了我这个:
ego alter col3 col4 col5
1 5 1 2 NA
1 4 1 NA NA
1 2 2 NA NA
1 3 2 NA NA
2 8 1 2 3
3 4 1 NA NA
3 7 1 3 NA
3 6 1 2 3
从这里我不确定如何获得定向友谊的波跨度(长度),包括不计算非连续提名(如 ego 3 alter 7)。
【问题讨论】:
-
以下会生成您想要的输出,但我怀疑这是巧合。我不知道它在其他数据上的表现如何。
edges %>% group_by(ego, alter) %>% summarise(sum(wave == seq(wave))) -
对于完整的数据集,这似乎只适用于一次提名的朋友。任何出现在不止一个波中的对子,例如自我 3 和 7,友谊长度为 0。知道这是为什么吗?
标签: r dplyr tidyverse igraph data-manipulation