在具有多个分类代码的列条目中过滤数据框以查找分类代码的第一个字母

问题描述 投票:0回答:1

我正在尝试将专利数据框过滤到其分类代码中。我只想获取代码中具有特定首字母的专利,但每个列条目都有多个这些代码,有时以不同的字母结尾,有时也有不同的起始字母(如果相关,它们是 IPC 类别) .

例如,条目如下所示:

“G09B 9/04(2013.01)|G09B 19/0053(2013.01)|G09B 19/167(2013.01)|G06F 3/14(2013.01)”

因此,如果我想要所有具有 F 一级分类的专利,即使其中一个代码末尾只有 F,该条目也会提供给我。

我尝试了这个,但遇到了问题

AIPC <- merge123[grepl("A",merge123$IPC),]

我对 R 相当陌生,所以请原谅我,如果这是一个愚蠢的问题。

r dataframe filter
1个回答
0
投票

如果没有可重现的数据,这有点困难,但如果您的数据采用这种一致的格式 - 字母、2 个数字、感兴趣的字母、空格、数字 - 您只需指定模式即可。

  • [A-Z]
    寻找任何字母
  • \\d{2}
    专门寻找 2 个数字
  • F
    寻找“F”
  • \\s
    寻找空白
  • \\d+
    查找 1 个或多个数字

所以你可以这样做:

grep("[A-Z]\\d{2}F\\s\\d+", x, value = TRUE)

其中

x
是您感兴趣的变量。以下是一些示例数据来演示:

x <- c("G09B 9/04(2013.01)|G09B 19/0053(2013.01)|G09B 19/167(2013.01)|G06F 3/14(2013.01)", #original
       "G09B 9/04(2013.01)|G09B 19/0053(2013.01)|G09B 19/167(2013.01)|G06B 3/14(2013.01)", # without F
       "G09B 9/04(2013.01)|G09F 19/0053(2013.01)|G09B 19/167(2013.01)|G06B 3/14(2013.01)", # F in different place
       "ABC DEF HIJ", #arbitrary 1
       "The cat jumped over the lazy fox", # arbitrary 2
       "123F F162") # arbitrary 3

运行指定模式的

grep
将返回您想要的:

grep("[A-Z]\\d{2}F\\s\\d+", x, value = TRUE)

# [1] "G09B 9/04(2013.01)|G09B 19/0053(2013.01)|G09B 19/167(2013.01)|G06F 3/14(2013.01)"
# [2] "G09B 9/04(2013.01)|G09F 19/0053(2013.01)|G09B 19/167(2013.01)|G06B 3/14(2013.01)"
© www.soinside.com 2019 - 2024. All rights reserved.