R.根据特定条件从列创建行

R.根据特定条件从列创建行,r,dataframe,R,Dataframe,我有一个类似于此的数据集: 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

我有一个类似于此的数据集:

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
我应该怎么做?也许有一些不错的包裹可以帮上忙


谢谢

这里有一种从
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     
库(dplyr)
图书馆(tidyr)
数据%>%
单独的_行(标记,sep=“,”)%>%
提取(标记,插入=c(“标记”、“编号1”、“编号2”),
regex=“\\[(.+):([0-9]+)/([0-9]+)\\]”)
#一个tibble:7x4
姓名标签编号1编号2
1简尼斯5 7
简不好笑
3简·斯特兰奇5 7
4简·斯马特7
5杰克老10 10
杰克很可爱
汤姆真棒2 4

谢谢!这真的很有帮助。我发现由两个单词组成的标签存在问题,我想问题在于它们之间的空格。我没有在问题中提到它们,有些标签看起来像“非常好”。如何指定标记中有时有空格?您可以尝试将
\\w
替换为
.Hm。这只会创建NAs。我想,删除空格更容易。如果你用一些例子来回答你的问题,我可以尝试用正则表达式模式来帮助你