使用tidyr汇总到多个列

时间:2018-06-07 17:39:34

标签: r dplyr tidyr

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

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 :(得分: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。