如何使用包含多个ID类型的行筛选表

时间:2018-01-19 17:03:33

标签: r

我有一个数据库,其表格 DF 就像这样

    ID Average
   A_1     1.5
   B_2     1.8
   C_3     2.9
   B_1     8.0
   C_4    12.0
   D_1     3.0
   B_4     6.0
   C_1     3.4
   D_2     5.6
   F_1     7.8

以下是我在R脚本中作为名为 DF_RAW 的df导入的excel文件的内容

  ID_Raw Measure
       A  Length
   B,C,D Breadth
       A  Length
   B,C,D Breadth
   B,C,D Breadth
       F   Width

我正在尝试编写一个SQL查询,根据DF_RAW中不同类型的ID过滤DF中的内容

ID_types <- as.character(unique(DF_RAW$ID_Raw))
ID_config <- ID_types[1] #"A"

现在,ID是A

SELECT * FROM   DF 
WHERE  ID LIKE ( '",ID_config,"%' )

这很好用,我得到了我想要的输出,但当我将索引更改为

ID_config <- ID_types[2] #"B,C,D"

它不返回任何数据。我想要的输出是

    ID Average
   B_2     1.8
   C_3     2.9
   B_1     8.0
   C_4    12.0
   D_1     3.0
   B_4     6.0
   C_1     3.4
   D_2     5.6

如何使用R?

实现所需的输出

1 个答案:

答案 0 :(得分:1)

使用R,如果我们使用sqldf库,请使用sprintfgsub

创建字符串
library(sqldf)
ID_config <- ID_types[2]
ID_confign <- sprintf("SELECT * FROM DF WHERE ID LIKE '%%%s%%'", 
 gsub(",", "%' OR ID LIKE '%", ID_config))

sqldf(ID_confign)
#   ID Average
#1 B_2     1.8
#2 C_3     2.9
#3 B_1     8.0
#4 C_4    12.0
#5 D_1     3.0
#6 B_4     6.0
#7 C_1     3.4
#8 D_2     5.6