我需要进行网络分析,但是我坚持这样做。我有许多(26 000多个)项目ID,参与者数量不一(各项目从1到193不等)。对于网络分析,我必须通过独特的项目将参与者彼此联系起来。例如:
我想看的是:
因此,基本上,我想将每个项目中的其他参与者粘贴到给定项目的第一个参与者之后。那将是我可以用作边缘定义的非数字矢量。
我已经尝试了一些循环,但是我无法使其工作。
谢谢您的帮助!
答案 0 :(得分:0)
gopkg.in/goracle.v2
答案 1 :(得分:0)
我们可以使用tidyverse
。在按“ project_id”分组后,将paste
和其他first
“ participant_id”分组为list
,unnest
,并用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))