在R中生成唯一子字符串表
因此,我有一个非常大的数据集,我想知道一个列的唯一值,该列有大约400000个观察值,每个观察值如下所示:在R中生成唯一子字符串表,r,unique,substr,R,Unique,Substr,因此,我有一个非常大的数据集,我想知道一个列的唯一值,该列有大约400000个观察值,每个观察值如下所示: 标识符:abzcd:def:RANDOMNUMBERSTRING和标识符:de:ghijklm:RANDOMNUMBERSTRING。 我只希望随机数字符串之前的部分具有唯一匹配项。换句话说,我只想过滤掉代码的重复项:identifier:LETTERS:LETTERS unique函数不起作用,看起来我需要确切地知道要过滤哪些子字符串,或者子字符串要使用substr函数多长时间。关于我如
标识符:abzcd:def:RANDOMNUMBERSTRING
和标识符:de:ghijklm:RANDOMNUMBERSTRING
。
我只希望随机数字符串之前的部分具有唯一匹配项。换句话说,我只想过滤掉代码的重复项:identifier:LETTERS:LETTERS
unique
函数不起作用,看起来我需要确切地知道要过滤哪些子字符串,或者子字符串要使用substr
函数多长时间。关于我如何做到这一点有什么建议吗
以下是一些可用作模型的数据:
randz <- data.frame(id =
sprintf("identifier:%s%s%s:%s%s%s:%s",
sample(letters, 1000,replace = T ),
sample(letters, 1000,replace = T ),
sample(letters, 1000,replace = T ),
sample(letters, 1000,replace = T ),
sample(letters, 1000,replace = T ),
sample(letters, 1000,replace = T ),
sample(6000:7000, 1000, replace = T )))
randz
randz这里有一个使用tidyverse
# Fake Data
randz <- data.frame(id =
sprintf("identifier:%s%s%s:%s%s%s:%s",
sample(letters, 1000,replace = T ),
sample(letters, 1000,replace = T ),
sample(letters, 1000,replace = T ),
sample(letters, 1000,replace = T ),
sample(letters, 1000,replace = T ),
sample(letters, 1000,replace = T ),
sample(6000:7000, 1000, replace = T )))
输出:
A tibble: 1,000 x 2
out n
<chr> <int>
1 identifier:aar:muk 1
2 identifier:abe:tlo 1
3 identifier:abg:qux 1
4 identifier:abh:bxx 1
5 identifier:abl:vdj 1
A tible:1000 x 2
外
1标识符:aar:muk 1
2标识符:abe:tlo 1
3标识符:abg:qux 1
4标识符:abh:bxx 1
5标识符:abl:vdj 1
您可以使用正则表达式提取它们。下面是一个使用stringr
包的示例
str\u extract(“标识符:de:ghijklm:RANDOMNUMBERSTRING”,“标识符\\:[a-z]+\\:[a-z]+)”)
A tibble: 1,000 x 2
out n
<chr> <int>
1 identifier:aar:muk 1
2 identifier:abe:tlo 1
3 identifier:abg:qux 1
4 identifier:abh:bxx 1
5 identifier:abl:vdj 1