通过唯一ID进行粘贴命令

时间:2019-03-13 17:02:11

标签: r networking unique paste social

我需要进行网络分析,但是我坚持这样做。我有许多(26 000多个)项目ID,参与者数量不一(各项目从1到193不等)。对于网络分析,我必须通过独特的项目将参与者彼此联系起来。例如:

Example

我想看的是:

What i want to see

因此,基本上,我想将每个项目中的其他参与者粘贴到给定项目的第一个参与者之后。那将是我可以用作边缘定义的非数字矢量。

我已经尝试了一些循环,但是我无法使其工作。

谢谢您的帮助!

2 个答案:

答案 0 :(得分:0)

gopkg.in/goracle.v2

答案 1 :(得分:0)

我们可以使用tidyverse。在按“ project_id”分组后,将paste和其他first“ participant_id”分组为listunnest,并用select删除“ project_id”列

library(dplyr)
library(tidyr)
df1 %>% 
  group_by(project_id) %>%
  summarise(newcol = list(paste(first(participant_id), 
                  participant_id[-1], sep="."))) %>% 
  unnest %>%
  select(-project_id)
# A tibble: 6 x 1
#  newcol 
#  <chr>  
#1 s01.s02
#2 s01.s05
#3 s02.s03
#4 s02.s06
#5 s02.s09
#6 s10.s19

数据

df1 <- structure(list(project_id = c(1, 1, 1, 2, 2, 2, 2, 3, 3), 
  participant_id = c("s01", 
"s02", "s05", "s02", "s03", "s06", "s09", "s10", "s19")), 
 class = "data.frame", row.names = c(NA, 
 -9L))