将单列拆分为多列

时间:2019-05-01 00:18:20

标签: r regex

我需要将一个数据帧拆分为多个列,以确保每个单元格中仅包含一个值。当前数据框如下所示:

 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 个答案:

答案 0 :(得分:1)

一种方法是提取方括号之间的所有内容,然后使用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

主要部分是正则表达式,用于提取圆括号之间的所有内容。完成此操作后,我们可以使用this链接中的任何方法来将逗号分隔的值分隔在不同的行中。