如何从R中的字符串中删除方括号和文本

li9yvcax  于 2024-01-03  发布在  其他
关注(0)|答案(4)|浏览(123)

我在R语言中遇到了一个问题,处理 Dataframe (test_dataframe)列(test_column)值如下:
列中的原始字符串:

  1. test_column
  2. 6.77[9]
  3. 5.92[10]
  4. 2.98[103]

字符串
我需要删除方括号和方括号内的任何字符,因此目标值如下:

  1. test_column
  2. 6.77
  3. 5.92
  4. 2.98


我试着用R语言的gsub函数,但不是很幸运地解决了它,有人能帮忙弄清楚吗?

cx6n0qe3

cx6n0qe31#

我会使用:用途:

  1. input <- c("6.77[9]", "5.92[10]", "2.98[103]")
  2. gsub("\\[.*?\\]", "", input)
  3. [1] "6.77" "5.92" "2.98"

字符串
正则表达式模式\[.*?\]应该匹配方括号中的任何引用项,使用gsub将告诉R替换所有这些项。

l2osamch

l2osamch2#

您可以使用sub并删除方括号后的所有内容。

  1. df$test_column <- sub("\\[.*", "", df$test_column)
  2. df
  3. # test_column
  4. #1 6.77
  5. #2 5.92
  6. #3 2.98

字符串
您可能希望将sub的输出 Package 在as.numeric中。
如果前面总是有一个数值,如示例所示,也可以使用parse_number

  1. readr::parse_number(df$test_column)
  2. #[1] 6.77 5.92 2.98

数据

  1. df <- structure(list(test_column = c("6.77[9]", "5.92[10]", "2.98[103]"
  2. )), row.names = c(NA, -3L), class = "data.frame")

展开查看全部
7dl7o3gd

7dl7o3gd3#

我们可以从stringr使用str_remove

  1. library(stringr)
  2. library(dplyr)
  3. df %>%
  4. mutate(test_column = str_remove(test_column, "\\[.*"))
  5. # test_column
  6. #1 6.77
  7. #2 5.92
  8. #3 2.98

字符串

11dmarpk

11dmarpk4#

这也可能是另一个使用stringrversion: 1.5.1中的str_remove_all()的选项,该包使用parentheses创建捕获组,然后通过管道传输到as.double()将其转换为数值向量:

  1. str_remove_all(c("6.77[9]", "5.92[10]", "2.98[103]")
  2. ,pattern = "(\\[.*\\])") %>%
  3. as.double()
  4. [1] 6.77 5.92 2.98

字符串

相关问题