使用 R 如何删除特定字符后的所有单词
using R How to remove all words after a specific character in
我在 tbl_df 中有一列标题为“搜索”,我想删除问号“?”右侧的所有字符
示例
Atlanta?adfjladsfjf
Georgia?fdfdfjflajf
LosAngeles?adlfdkfd
期望的输出
Atlanta
Georgia
Los Angeles
我们可以使用sub
tbl_df$Search <- sub("\?.*", "", tbl_df$Search)
如果需要在多列应用,使用lapply
from base R
nm1 <- names(tbl_df)[1:2] # // applying for first two columns
tbl_df[nm1] <- lapply(tbl_df[nm1], sub, pattern = "\?.*", replacement = "")
或使用tidyverse
library(dplyr)
library(stringr)
tbl_df <- tbl_df %>%
mutate(across(all_of(nm1), str_remove, pattern = "\?.*"))
rebus 和 stringr 的替代方案:
library(rebus)
library(stringr)
td <- c("Atlanta?adfjladsfjf","Georgia?fdfdfjflajf","LosAngeles?adlfdkfd")
p <- START %R% capture(one_or_more(ALPHA)) %R% "?"
stringr::str_extract(td, p)
[1] "Atlanta" "Georgia" "LosAngeles"
另一个版本使用 sub
但模式 "(.*)\?.*"
> sub("(.*)\?.*","\1",s)
[1] "Atlanta" "Georgia" "LosAngeles"
到达 "?"
之前的部分被保留。
数据
s <- c("Atlanta?adfjladsfjf","Georgia?fdfdfjflajf","LosAngeles?adlfdkfd")
我在 tbl_df 中有一列标题为“搜索”,我想删除问号“?”右侧的所有字符
示例
Atlanta?adfjladsfjf
Georgia?fdfdfjflajf
LosAngeles?adlfdkfd
期望的输出
Atlanta
Georgia
Los Angeles
我们可以使用sub
tbl_df$Search <- sub("\?.*", "", tbl_df$Search)
如果需要在多列应用,使用lapply
from base R
nm1 <- names(tbl_df)[1:2] # // applying for first two columns
tbl_df[nm1] <- lapply(tbl_df[nm1], sub, pattern = "\?.*", replacement = "")
或使用tidyverse
library(dplyr)
library(stringr)
tbl_df <- tbl_df %>%
mutate(across(all_of(nm1), str_remove, pattern = "\?.*"))
rebus 和 stringr 的替代方案:
library(rebus)
library(stringr)
td <- c("Atlanta?adfjladsfjf","Georgia?fdfdfjflajf","LosAngeles?adlfdkfd")
p <- START %R% capture(one_or_more(ALPHA)) %R% "?"
stringr::str_extract(td, p)
[1] "Atlanta" "Georgia" "LosAngeles"
另一个版本使用 sub
但模式 "(.*)\?.*"
> sub("(.*)\?.*","\1",s)
[1] "Atlanta" "Georgia" "LosAngeles"
到达 "?"
之前的部分被保留。
数据
s <- c("Atlanta?adfjladsfjf","Georgia?fdfdfjflajf","LosAngeles?adlfdkfd")