我在R语言中遇到了一个问题,处理 Dataframe (test_dataframe)列(test_column)值如下:列中的原始字符串:
test_dataframe
test_column
test_column6.77[9]5.92[10]2.98[103]
6.77[9]
5.92[10]
2.98[103]
字符串我需要删除方括号和方括号内的任何字符,因此目标值如下:
test_column6.775.922.98
6.77
5.92
2.98
型我试着用R语言的gsub函数,但不是很幸运地解决了它,有人能帮忙弄清楚吗?
gsub
cx6n0qe31#
我会使用:用途:
input <- c("6.77[9]", "5.92[10]", "2.98[103]")gsub("\\[.*?\\]", "", input)[1] "6.77" "5.92" "2.98"
input <- c("6.77[9]", "5.92[10]", "2.98[103]")
gsub("\\[.*?\\]", "", input)
[1] "6.77" "5.92" "2.98"
字符串正则表达式模式\[.*?\]应该匹配方括号中的任何引用项,使用gsub将告诉R替换所有这些项。
\[.*?\]
l2osamch2#
您可以使用sub并删除方括号后的所有内容。
sub
df$test_column <- sub("\\[.*", "", df$test_column)df# test_column#1 6.77#2 5.92#3 2.98
df$test_column <- sub("\\[.*", "", df$test_column)
df
# test_column
#1 6.77
#2 5.92
#3 2.98
字符串您可能希望将sub的输出 Package 在as.numeric中。如果前面总是有一个数值,如示例所示,也可以使用parse_number
as.numeric
parse_number
readr::parse_number(df$test_column)#[1] 6.77 5.92 2.98
readr::parse_number(df$test_column)
#[1] 6.77 5.92 2.98
型
数据
df <- structure(list(test_column = c("6.77[9]", "5.92[10]", "2.98[103]")), row.names = c(NA, -3L), class = "data.frame")
df <- structure(list(test_column = c("6.77[9]", "5.92[10]", "2.98[103]"
)), row.names = c(NA, -3L), class = "data.frame")
7dl7o3gd3#
我们可以从stringr使用str_remove
stringr
str_remove
library(stringr)library(dplyr)df %>% mutate(test_column = str_remove(test_column, "\\[.*"))# test_column#1 6.77#2 5.92#3 2.98
library(stringr)
library(dplyr)
df %>%
mutate(test_column = str_remove(test_column, "\\[.*"))
字符串
11dmarpk4#
这也可能是另一个使用stringr包version: 1.5.1中的str_remove_all()的选项,该包使用parentheses创建捕获组,然后通过管道传输到as.double()将其转换为数值向量:
version: 1.5.1
str_remove_all()
parentheses
as.double()
str_remove_all(c("6.77[9]", "5.92[10]", "2.98[103]") ,pattern = "(\\[.*\\])") %>% as.double()[1] 6.77 5.92 2.98
str_remove_all(c("6.77[9]", "5.92[10]", "2.98[103]")
,pattern = "(\\[.*\\])") %>%
[1] 6.77 5.92 2.98
4条答案
按热度按时间cx6n0qe31#
我会使用:用途:
字符串
正则表达式模式
\[.*?\]
应该匹配方括号中的任何引用项,使用gsub
将告诉R替换所有这些项。l2osamch2#
您可以使用
sub
并删除方括号后的所有内容。字符串
您可能希望将
sub
的输出 Package 在as.numeric
中。如果前面总是有一个数值,如示例所示,也可以使用
parse_number
型
数据
型
7dl7o3gd3#
我们可以从
stringr
使用str_remove
字符串
11dmarpk4#
这也可能是另一个使用
stringr
包version: 1.5.1
中的str_remove_all()
的选项,该包使用parentheses
创建捕获组,然后通过管道传输到as.double()
将其转换为数值向量:字符串