首页 文章

使用tidyr汇总到多个列

提问于
浏览
0

我有一个包含两列的数据框 .

Col A是参考文献的载体,Col B是参考文献中研究位点的相应载体 .

我的问题是,在一个参考文献中可能有多个研究站点,也可能在多个参考文献中找到一个研究站点 .

我想对研究站点进行总结,返回与研究站点相关联的列数 .

就像是:

Original table
-------------
ref  | site
-------------
A    | S1
-------------
A    | S2
-------------
B    | S1
-------------

New table
site  | ref1 | ref2
-------------------
S1    | A    | B
-------------------
S2    | A    | NA
-------------------

spread 不起作用,因为 site 有重复项 .

1 回答

  • 0

    这是一种让 spread 工作并生成所需列的方法 .

    library(tidyverse)
    original <- tibble(
      ref = c("A", "A", "B", "A"),
      site = c("S1", "S2", "S1", "S1")
    )
    
    original %>%
      distinct() %>%
      group_by(site) %>%
      mutate(refcount = str_c("ref", row_number())) %>%
      spread(refcount, ref)
    #> # A tibble: 2 x 3
    #> # Groups:   site [2]
    #>   site  ref1  ref2 
    #>   <chr> <chr> <chr>
    #> 1 S1    A     B    
    #> 2 S2    A     <NA>
    

    reprex package(v0.2.0)创建于2018-06-07 .

相关问题