如何在r中提取特定字符之间的字符串


您可以使用以下方法提取 R 中特定字符之间的字符串:

方法1:使用Base R提取特定字符之间的字符串

 gsub(" .*char1 (.+) char2.*", "\\1 ", my_string)

方法2:使用stringr提取特定字符之间的字符串

 library (stringr)

str_match(my_string, " char1\\s*(.*?)\\s*char2 ")[,2]

这两个示例将char1char2之间的字符串提取到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列中每一行的teampro字符之间的字符串:

 #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列中每行的teampro字符之间的字符串。

相关R 中 gsub() 简介

示例 2:使用 stringr 包提取特定字符之间的字符串

以下代码展示了如何使用 R 中stringr包的str_match()函数提取数据框team列中每一行的teampro字符之间的字符串:

 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列中每行的teampro字符之间的字符串。

这对应于在基础 R 中使用gsub()函数的结果。

请注意, str_match()函数返回一个矩阵,其中第一列包含原始字符串,第二列包含感兴趣的子字符串。

因此,我们必须使用[,2]str_match()函数返回的矩阵中仅提取第二列。

其他资源

以下教程解释了如何在 R 中执行其他常见任务:

如何在 R 中选择包含特定字符串的列
如何从R中的字符串中删除字符
如何在R中查找字符串中的字符位置

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注