суммировать на несколько столбцов с помощью Tidyr - PullRequest
0 голосов
/ 07 июня 2018

У меня есть датафрейм с двумя столбцами.

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 голосов
/ 07 июня 2018

Вот способ заставить 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>

Создано в 2018-06-07 пакетом Представления (v0.2.0).

...