使用grep帮助设置数据框的子集 [英] Using grep to help subset a data frame

查看:25
本文介绍了使用grep帮助设置数据框的子集的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在设置数据子集时遇到问题。我希望将数据子集到第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开头的行,可能也是因为我不确定如何使用通配符。

推荐答案

使用[解压缩非常简单:

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的帮助页显示了如何将grepgreplsubset一起使用(如果您更喜欢使用此函数而不是[)。这里有一个示例。

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

从R3.3开始,现在还有startsWith函数,您可以再次将其与subset一起使用(或与上面的任何其他方法一起使用)。根据该函数的帮助页面,它比使用substringgrepl要快得多。

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

这篇关于使用grep帮助设置数据框的子集的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆