获取特定值的一行与正则表达式

时间:2016-06-20 14:31:36

标签: r

我不确定如何标题,但是这里就是。

我有一个数据集如下

HNum       Grade
1234       LGD
1234       NDBE
1234       NDBE
5678       NDBE
5678       HGD
9765       LGD
7556       LGD
7556       NDBE

如果一行中有LGD,我想获得与之关联的HNum的所有行,因此输出将为:

HNum       Grade
1234       LGD
1234       NDBE
1234       NDBE
9765       LGD
7556       LGD
7556       NDBE

我真的不知道该怎么做,因为我猜它会依赖于匹配Grade中的一行,获取HNum然后重新greting原始数据集以获取具有HNum的行

我可以做grep之类的事情:

LGDSubset <- unique(df[grep("LGD", df$Grade,perl=TRUE), ])
HNumLGD<-as.vector(LGDSubset$HNum)

应该给我一个独特HNum

的向量

但我不知道该怎么做,然后遍历此向量,并根据每个HNum

从原始数据框中提取所有行

1 个答案:

答案 0 :(得分:1)

我们可以按df包含HNum时出现的Grade值对"LGD"进行分组:

df[df$HNum %in% df$HNum[grep("LGD",df$Grade)],] 
#  HNum Grade
#1 1234   LGD
#2 1234  NDBE
#3 1234  NDBE
#6 9765   LGD
#7 7556   LGD
#8 7556  NDBE