[英]R regex to remove anything after second occurance of / in data frame column
我將數據存儲在如下所示的dataframe
列中:
/travel
/food and drink/restaurants
/food and drink
/sports/outdoors/climbing
/news
/family
每行都有一些“ /”,但它們始終以“ /”開頭。 有些行也是空白的。 我只需要將此數據轉換為僅在第一個“ /”之后但在第二個“ /”之前包含文本。 我還想將結果中每個單詞的首字母大寫。 所以我希望結果看起來像這樣:
Travel
Food And Drink
Food And Drink
Sports
News
Family
x <- c('/travel',
'/food and drink/restaurants',
'/food and drink',
'/sports/outdoors/climbing',
'/news',
'/family')
大寫每個字
gsub('(?<=\\b)([a-z])', '\\U\\1', x, perl = TRUE)
# [1] "/Travel" "/Food And Drink/Restaurants" "/Food And Drink"
# [4] "/Sports/Outdoors/Climbing" "/News" "/Family"
提取第一個/..
組
gsub('^/([^/]+)|.', '\\1', x)
# [1] "travel" "food and drink" "food and drink" "sports" "news"
# [6] "family"
結合兩者
gsub('(?<=\\b)([a-z])', '\\U\\1', gsub('^/([^/]+)|.', '\\1', x), perl = TRUE)
# [1] "Travel" "Food And Drink" "Food And Drink" "Sports" "News"
# [6] "Family"
如果您不關心大寫的“和”,則可以使用第二個gsub
和tools::toTitleCase
tools::toTitleCase(gsub('^/([^/]+)|.', '\\1', x))
# [1] "Travel" "Food and Drink" "Food and Drink" "Sports" "News"
# [6] "Family"
require(magrittr)
txt <- c("/travel", "/food and drink/restaurants", "/food and drink", "/sports/outdoors/climbing", "", "/news", "/family")
strsplit(txt, "/") %>% sapply( '[', 2 ) #per Frank's suggestion
## [1] "travel" "food and drink" "food and drink" "sports"
## [5] NA "news" "family"
一種快速的方法如下:我假設要收集的部分中只有單詞字符\\w
和空格\\s
。
char<- c("/travel","/food and drink/restaurants","/food and drink","/sports/outdoors/climbing","","/news","/family")
match <- regexpr("[\\w\\s]+",char,perl=TRUE)
regmatches(char,match)
## regmatches(char,match)
## [1] "travel" "food and drink" "food and drink" "sports"
## [5] "news" "family"
您可能需要安裝stringi
軟件包(無論如何您都應該擁有它:),但是以下方法可以解決問題
stringi::stri_trans_totitle( gsub("/([^/]+)", "\\1", data))
gsub
只是在第一個/
后面直到第二個/
或字符串的末尾選擇文本。 然后stringi::stri_trans_totitle
為您進行大小寫轉換。
> s <-c("/food and drink/restaurants", "/beer and wine", "", "/news")
> stringi::stri_trans_totitle( gsub("/([^/]+)", "\\1", s))
[1] "Food And Drinkrestaurants" "Beer And Wine"
[3] "" "News"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.