R. Создание строки из столбца на основе заданных c условий - PullRequest
0 голосов
/ 16 июня 2020

У меня есть набор данных, подобный этому:

name     tag
Jane    [nice:5/7], [not funny:4/4], [strange:5/7], [smart:7/7]
Jack    [old:10/10], [very cute:4/6]
Tom     [awesome:2/4]

Я хотел бы превратить его в набор данных, который выглядит следующим образом:

name     tag        number1      number2
Jane    nice        5             7
Jane    not funny   4             4
Jane    strange     5             7
Jane    smart       7             7
Jack    old         10            10
Jack    very cute   4             6
Tom     awesome     2             4

Как мне подойти Это? Может быть, есть какие-нибудь хорошие пакеты, которые могут помочь?

Спасибо!

1 Ответ

1 голос
/ 16 июня 2020

Вот подход с separate_rows и extract из tidyr:

Редактировать : Теперь с двумя тегами слов.

library(dplyr)
library(tidyr)
data %>% 
  separate_rows(tag, sep = ", ") %>%
  extract(tag, into = c("tag","number1", "number2"),
          regex = "\\[(.+):([0-9]+)/([0-9]+)\\]")
# A tibble: 7 x 4
  name  tag       number1 number2
  <fct> <chr>     <chr>   <chr>  
1 Jane  nice      5       7      
2 Jane  not funny 4       4      
3 Jane  strange   5       7      
4 Jane  smart     7       7      
5 Jack  old       10      10     
6 Jack  very cute 4       6      
7 Tom   awesome   2       4     
...