如何选择以R中某个子字符串开头的元组

时间:2017-06-05 20:10:38

标签: r

我的数据框如下所示

> df[1:10,c("Uri","Latency")]
                                                                                                       Uri
1                          /filters/test_group_1/test_datasource%20with%20space/test_application_alias_100
2                                                          /applications?includeDashboards&includeMappings
3                                                                   /applications/test_application_alias_1
4                                                          /applications?includeDashboards&includeMappings
5                                                                 /applications/test_application_alias_200
6                                                                 /applications/test_application_alias_100
7    /filters/00000000-0000-0000-0000-000000000001/test_datasource%20with%20space/test_application_alias_0
8                                             /dashboards?dashboard=test_dashboard_alias_9&includeMappings
9               /filters/00000000-0000-0000-0000-000000000001/test_dataSource_1/test_application_alias_100
10 /filters/00000000-0000-0000-0000-000000000001/test_datasource%20with%20space/test_application_alias_100
   Latency
1      296
2     1388
3       58
4      833
5      239
6       60
7      217
8       36
9       86
10     112

我想只选择那些以/ applications开头的行。请注意,Uri的其余部分可能是任何东西,并不重要。

我可以通过以下方式获得完全匹配,

df[which(df$Uri == "/applications"),c("Uri","Latency")]

但是,因为,我正在寻找一个子字符串,我明白,我可能需要做一些通配符处理,这在SQL中看起来像。

select * from <table_name> where Uri like '%/applications%'

我怎样才能在R

中做同样的事情

2 个答案:

答案 0 :(得分:2)

假设df$Uri是一个字符向量,我会选择:

df[startsWith(df$Uri, "/applications"), ]

答案 1 :(得分:0)

我会使用正则表达式:

df[ grepl( "^\\/applications" , df[, "Uri"] ) , c("Uri","Latency") ]