如何在r中提取特定字符之间的字符串
您可以使用以下方法提取 R 中特定字符之间的字符串:
方法1:使用Base R提取特定字符之间的字符串
gsub(" .*char1 (.+) char2.*", "\\1 ", my_string)
方法2:使用stringr提取特定字符之间的字符串
library (stringr) str_match(my_string, " char1\\s*(.*?)\\s*char2 ")[,2]
这两个示例将char1和char2之间的字符串提取到my_string中。
以下示例展示了如何在实践中使用以下数据框使用每种方法:
#create data frame
df <- data. frame (team=c('team Mavs pro', 'team Heat pro', 'team Nets pro'),
dots=c(114, 135, 119))
#view data frame
df
team points
1 Mavs pro team 114
2 team Heat pro 135
3 pro Nets team 119
示例 1:使用 Base R 提取特定字符之间的字符串
以下代码显示如何提取数据框team列中每一行的team和pro字符之间的字符串:
#create new column that extracts string between team and pro df$team_name <- gsub(" .*team (.+) pro.*", "\\1 ", df$team) #view updated data frame df team points team_name 1 Mavs pro team 114 Mavs 2 team Heat pro 135 Heat 3 Nets pro team 119 Nets
请注意,名为team_name的新列包含数据框team列中每行的team和pro字符之间的字符串。
相关: R 中 gsub() 简介
示例 2:使用 stringr 包提取特定字符之间的字符串
以下代码展示了如何使用 R 中stringr包的str_match()函数提取数据框team列中每一行的team和pro字符之间的字符串:
library (stringr) #create new column that extracts string between team and pro df$team_name <- str_match(df$team, " team\\s*(.*?)\\s*pro ")[,2] #view updated data frame df team points team_name 1 Mavs pro team 114 Mavs 2 team Heat pro 135 Heat 3 Nets pro team 119 Nets
请注意,名为team_name的新列包含数据框team列中每行的team和pro字符之间的字符串。
这对应于在基础 R 中使用gsub()函数的结果。
请注意, str_match()函数返回一个矩阵,其中第一列包含原始字符串,第二列包含感兴趣的子字符串。
因此,我们必须使用[,2]从str_match()函数返回的矩阵中仅提取第二列。
其他资源
以下教程解释了如何在 R 中执行其他常见任务: