我需要将一个数据帧拆分为多个列,以确保每个单元格中仅包含一个值。当前数据框如下所示:
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 |
我可以使用基于“()”和“,”作为分隔符的正则表达式拆分单个单元格。但是,我不知道如何填充多列。
答案 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链接中的任何方法来将逗号分隔的值分隔在不同的行中。