如何在 R 中使用 %in% 符号?

How to work with %in% symbol in R?

我发现 %in% 代表匹配运算符,二进制(在模型公式中:嵌套)。我的工作区中有两个 table。第一个 table 包含

> str(GP.drugs)
'data.frame':   4158393 obs. of  9 variables:
 $ SHA     : Factor w/ 10 levels "Q30","Q31","Q32",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ PCT     : Factor w/ 151 levels "5A3","5A4","5A5",..: 16 16 16 16 16 16 16 16 16 16 ...
 $ PRACTICE: Factor w/ 10191 levels "A81001","A81002",..: 344 345 345 345 345 345 345 345 345 345 ...
 $ BNF.CODE: Factor w/ 1731 levels "0101010C0","0101010E0",..: 878 4 9 11 17 22 25 26 27 28 ...
 $ BNF.NAME: Factor w/ 1524 levels "Abacavir                                ",..: 317 289 294 1284 37 379 655 825 1115 824 ...
 $ ITEMS   : int  1 27 1 2 97 4 40 98 27 2 ...
 $ NIC     : num  1.89 74.94 3.2 7.35 439.83 ...
 $ ACT.COST: num  1.77 69.92 2.98 6.84 408.43 ...
 $ PERIOD  : num  201109 201109 201109 201109 201109 ...

第二个 table 包含

> str(problem.drugs)
'data.frame':   13 obs. of  2 variables:
 $ Drug    : Factor w/ 13 levels "Alogliptin","Glipizide",..: 1 2 3 9 10 11 12 13 4 7 ...
 $ Category: Factor w/ 1 level "metformin": 1 1 1 1 1 1 1 1 1 1 ...

我使用的代码和错误是

> t<-subset(GP.drugs,n %in% p)
> t
[1] SHA      PCT      PRACTICE BNF.CODE BNF.NAME ITEMS    NIC      ACT.COST  PERIOD  
<0 rows> (or 0-length row.names)

更多错误

它对 table 的列名有影响还是对两者的列数有影响?

您在 GP.drugs 数据框中的 BNF.NAME 列似乎有额外的尾随空格:请注意它说的是 "Abacavir " 作为第一个元素。如果 GP.drugs 中的所有药物都是如此,但 problem.drugs 中的药物不是这样,它将阻止任何匹配。

要解决此问题,您可以使用 stringr 中的 str_trim 函数,该函数会删除前导和尾随空格:

library(stringr)
n <- str_trim(GP.drugs$BNF.NAME)

# same thing you did before
p <- problem.drugs$Drug
t <- subset(GP.drugs, n %in% p)

Other solutions can be found here.

试试,

GP.drugs[GP.drugs$BNF.NAME %in% problem.drugs$Drug, ]