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

标签 r dataframe subset

我无法设定我的资料。我希望将数据子集放在第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的帮助页面显示了与grep相比,如果您更喜欢使用此功能,则如何将greplsubset[结合使用。这是一个例子。
subset(My.Data, grepl("^G45", My.Data$x))
#      x y
# 2 G459 2

从R 3.3开始,现在还有startsWith函数,您可以再次将其与subset(或上述任何其他方法)一起使用。根据该功能的帮助页面,它比使用substringgrepl快得多。
subset(My.Data, startsWith(as.character(x), "G45"))
#      x y
# 2 G459 2

关于r - 使用grep帮助在R中子集数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21311386/

相关文章:

r - 创建独立的 Shiny 应用程序 - Chrome 错误

Roxygen错误 "Skipping invalid path"

python - Pandas :数据透视表

python - 重新分配唯一值 - pandas DataFrame

f# - 从 F# 中的集合中获取随机子集

R - 替换向量列表中的元素

r - ggplot 中的多个 geom_hline

通过引用 data.table r 中的列值删除行

pandas - 尝试向 pandas 数据帧添加 2 列,但其中一列已被纳入索引

r - 在对称数据框中删除满足条件的行和列