我有一列字符串,如下所示:
我希望删除.html
之后的所有内容。
例如 - 我想替换
"/abeers-khadi-brown-heena.html?root=search&searchterm=heena&type=product&ptype=product"
带
"/abeers-khadi-brown-heena.html"
如何为整个列执行此操作?
答案 0 :(得分:2)
但是你去了:一个正则表达式。
testvars <- c("adkjfa;iejaoejf;ai.html/ajdakflj", "abc.html","abcd.html?root=")
res <- gsub("(.+\\.html).+","\\1",testvars)
> res
[1] "adkjfa;iejaoejf;ai.html" "abc.html"
[3] "abcd.html"
答案 1 :(得分:1)
还有一个可用于此类目的的包urltools
。借用@Heroka创建的例子,
library(urltools)
url_parse(testvars)
scheme domain port path parameter fragment
#1 <NA> adkjfa;iejaoejf;ai.html <NA> ajdakflj <NA> <NA>
#2 <NA> abc.html <NA> <NA> <NA> <NA>
#3 <NA> abcd.html <NA> <NA> root= <NA>
答案 2 :(得分:0)
这显示了如何使用sub()替换其中一个字符串。
sub(".html.*", '.html', '/abeers-khadi-abeers-aloe-face-wash.html?root=sear')
这是将它应用于数据框的方法。这是对您数据的模拟。
rawdata <- c(
'/a-derma/foaming-gel.html',
'/abeers-khadi-abeers-aloe-face-wash.html?root=sear',
'/abeers-khadi-abeers-saffron-and-neem-face-wash.html?foo=bar'
)
df <- data.frame(previousPagePath=rawdata)
然后我使用了apply(),然后将其分配回列。
df['previousPagePath'] <- apply(df['previousPagePath'], 1, function(x) sub(".html.*", '.html', x) )
证明:
df
# previousPagePath
# 1 /a-derma/foaming-gel.html
# 2 /abeers-khadi-abeers-aloe-face-wash.html
# 3 /abeers-khadi-abeers-saffron-and-neem-face-wash.html
快乐的编码!