Разделение одного столбца на несколько столбцов - PullRequest
0 голосов
/ 01 мая 2019

Мне нужно разбить фрейм данных на несколько столбцов, чтобы убедиться, что в каждой ячейке содержится только одно значение. Текущий кадр данных выглядит так:

 projectid|  count | Name |  Type                         |   count   |
 .....................................................................
 ABC      |  211   | jack |abc(Apple, Orange, Water melon)|   Multiple|
 DBG      | 90     | jill | Plum                          |   single  |

Новый фрейм данных должен выглядеть как

 projectid|  count | Name |  Type          |  count |
 ....................................................
 ABC      |  211   | jack |  Apple         |Multiple|
 ABC      |  211   | jack |  Orange        |Multiple|
 ABC      |  211   | jack |  Water melon   |Multiple|
 DBG      |  90    | jill |  Plum          |single  |

Я могу разбить одну ячейку, используя регулярное выражение на основе "()" и "," в качестве разделителя. Тем не менее, я не могу понять, как заполнить несколько столбцов.

1 Ответ

1 голос
/ 01 мая 2019

Одним из способов было бы извлечь все из скобок, а затем использовать separate_rows

library(dplyr)
library(tidyr)

df %>%
  mutate(Type = sub(".*\\((.*)\\).*", "\\1", Type)) %>%
  separate_rows(Type, sep = ",")

#  projectid count Name         Type  count.1
#1       ABC   211 jack        Apple Multiple
#2       ABC   211 jack       Orange Multiple
#3       ABC   211 jack  Water melon Multiple
#4       DBG    90 jill         Plum   single

Основная часть - это регулярное выражение для извлечения всего, что заключено в круглые скобки.Как только мы это сделаем, мы можем использовать любой метод из этой ссылки, чтобы отделить запятую в разных строках.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...