将数据框转换为有向图的格式

Convert data frame to format for directed graph

我有以下形式的工作历史数据:

data.frame(id = 1:3, history = c('java dev, engineer', 'software dev, python dev', 'backend dev, programmer, consultant'))

从最近的工作转到以前的工作。我想把它放到一个表格中,我可以用 'from' 和 'to' 列进行有向图分析,例如,第一个人从工程师到 java 开发人员:

data.frame(from = c('engineer', 'python dev', 'consultant', 'programmer'), to = c('java dev', 'software dev', 'programmer', 'backend dev'))

我尝试将逗号上的作业拆分到单独的列中,然后将更长的时间旋转到 'id'、'job number' 和 'job title' 列中,但没有比这更进一步的了。

您可以按逗号拆分数据并反转列表,以便首先获取最旧的数据。使用 lead 创建 to 列并删除 NA 值。 我建议保留 id 列,以便您识别哪个值属于哪个人 (id)。

library(dplyr)

df %>%
  tidyr::separate_rows(history, sep = ',\s*') %>%
  group_by(id) %>%
  mutate(history = rev(history), 
         from = history, 
         to = lead(history)) %>%
  na.omit() %>%
  select(id, from, to)

#     id from       to          
#  <int> <chr>      <chr>       
#1     1 engineer   java dev    
#2     2 python dev software dev
#3     3 consultant programmer  
#4     3 programmer backend dev