我希望我不会错过任何明显的东西,但这是我的问题:
给出这样的数据
Data1=
Name Number
AndyBullxxx 12
AlexPullxcx 14
AndyPamxvb 56
RickRalldfg 34
AndyPantert 45
SamSaltedf 45
我希望能够提取所有以“Andy”开头的行
subset(Data1,Name=="Andy*")
AndyBullxxx 12
AndyPamxvb 56
AndyPantert 45
所以基本上是一个外卡符号,它允许我将所有以特定字符开头的行分组。
答案 0 :(得分:18)
尝试,
df[grep("^Andy",rownames(df)),]
grep
的第一个参数是一个模式,一个正则表达式。 grep
返回包含第一个参数中给出的模式的行。 ^表示以。开头。
让我们重现这个:
df <- data.frame(x=c(12,14,56,34,45,45))
rownames(df) <- c("AndyBullxxx", "AlexPullxcx","AndyPamxvb", "RickRalldfg","AndyPantert","SamSaltedf")
## see what grep does
grep("^Andy",rownames(df))
答案 1 :(得分:9)
如果您对regex
感到不舒服,utils
包中有一个函数可以将基于通配符的表达式转换为正则表达式。所以你可以做到
df[grepl(glob2rx('Andy*'), rownames(df)),]
答案 2 :(得分:3)
我想你想要一个正则表达式:
subset(Data1, grepl("^\bAndy", Name))
或
Data1[grepl("^\bAndy", Data1$Name),]
在正则表达式中,“^”代表startswith,而\ b代表下一组字符将成为一个单词。正则表达式是一种强大的文本处理工具,需要进行一些研究网上有很多教程和网站。我使用的其中一个是:
http://www.regular-expressions.info/
我现在不能使用R(我的妻子笔记本电脑;)),因此这些代码片段未经测试。也许下次为我们提供一个示例数据集,这使得提供一个工作示例变得非常容易。