使用grep帮助在R中子集数据帧

斯图尔特·怀斯曼

我无法设定我的资料。我希望将数据子集放在第x列,其中前3个字符以G45开头。

我的数据框:

 x <- c("G448", "G459", "G479", "G406")  
 y <- c(1:4)
 My.Data <- data.frame (x,y)

我试过了:

 subset (My.Data, x=="G45*")

但是我不确定如何使用通配符。我也尝试过grep()来找到索引:

 grep  ("G45*", My.Data$x)

但是它返回所有4行,而不仅仅是返回G45开头的行,可能还因为我不确定如何使用通配符。

A5C1D2H2I1M1N2O1R2T1

使用[提取非常简单

grep将为您提供与您的搜索模式相匹配的位置(除非您使用value = TRUE)。

grep("^G45", My.Data$x)
# [1] 2

由于您在单列的值内搜索,因此实际上与行索引相对应。因此,将其与[(将用于My.Data[rows, cols]获取特定的行和列)一起使用。

My.Data[grep("^G45", My.Data$x), ]
#      x y
# 2 G459 2

的帮助页面subset显示了如何使用grep以及grepl与一起使用subset如果您更喜欢使用此功能)[这是一个例子。

subset(My.Data, grepl("^G45", My.Data$x))
#      x y
# 2 G459 2

从R 3.3开始,现在还提供了该startsWith函数,您可以再次使用函数subset(或与上述任何其他方法结合使用)。根据该功能的帮助页面,它比使用substring快得多grepl

subset(My.Data, startsWith(as.character(x), "G45"))
#      x y
# 2 G459 2

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章