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。我想,删除空格更容易。如果你用一些例子来回答你的问题,我可以尝试用正则表达式模式来帮助你