【问题标题】:Transform to adjacent matrix(from-to) from a long format data从长格式数据转换为相邻矩阵(从到)
【发布时间】:2021-01-07 06:33:06
【问题描述】:

这看起来几乎像 pivot_wide 操作,只是需要“复制”条目以确保我们捕获完整的从到过程。

我怀疑这可能是网络分析中的常见例程,但不确定是否有现成的函数可以进行这种转换。

谢谢

ID <- c(rep('A',2), rep('B',3))
process <- c('Category_8', 'Category_1', 'Category_3', 'Category_4', 'Category_1')

have <- tibble(
  ID,
  process
)
have
# A tibble: 5 x 2
  ID    process   
  <chr> <chr>     
1 A     Category_8
2 A     Category_1
3 B     Category_3
4 B     Category_4
5 B     Category_1

ID <- c(rep('A',1), rep('B',2))
From <- c('Category_8', 'Category_3', 'Category_4')
To <- c('Category_1', 'Category_4', 'Category_1')

want <- tibble(
  ID,
  From,
  To
)
want
# A tibble: 3 x 3
  ID    From       To        
  <chr> <chr>      <chr>     
1 A     Category_8 Category_1
2 B     Category_3 Category_4
3 B     Category_4 Category_1

【问题讨论】:

    标签: r dplyr


    【解决方案1】:

    您可以使用lead 为每个ID 获取process 的下一个值,并删除具有NA 值的行。

    library(dplyr)
    
    have %>%
      group_by(ID) %>%
      transmute(ID, from = process, to = lead(process)) %>%
      na.omit()
    
    #  ID    from       to        
    #  <chr> <chr>      <chr>     
    #1 A     Category_8 Category_1
    #2 B     Category_3 Category_4
    #3 B     Category_4 Category_1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-09
      • 2021-04-15
      相关资源
      最近更新 更多