Разделение дублирующих данных в новых столбцах в Tidyverse - PullRequest
2 голосов
/ 18 апреля 2019

У меня большая база данных, и многие данные дублируются, и я хочу создать два новых столбца для этих данных.

Вот краткое изложение данных

df <- tribble(~ID, ~Code,
              1, "p",
              1, "p",
              2, "f",
              3, "p",
              2, "p",
              3, "f",
              4, "f",
              4, "p",
              6, "p")

Я хотел бы получить следующие данные:

	Out1	Out2
1	p	p
2	f	p
3	p	f
4	f	p
5	p	NA
Я изо всех сил пытался бежать отдельно в тидиверсе, чтобы сделать это.Любая помощь?

1 Ответ

0 голосов
/ 18 апреля 2019

Один из способов сделать это:

df %>%
 group_by(ID) %>%
 mutate(temp = paste0("Out", seq_along(ID))) %>%
 spread(temp, Code)

     ID Out1  Out2 
  <dbl> <chr> <chr>
1     1 p     p    
2     2 f     p    
3     3 p     f    
4     4 f     p    
5     6 p     <NA> 

Если вы хотите изменить также идентификатор:

df %>%
 group_by(ID) %>%
 mutate(temp = paste0("Out", seq_along(ID))) %>%
 spread(temp, Code) %>%
 ungroup() %>%
 mutate(ID = seq_along(ID))

     ID Out1  Out2 
  <int> <chr> <chr>
1     1 p     p    
2     2 f     p    
3     3 p     f    
4     4 f     p    
5     5 p     <NA> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...