gpt4 book ai didi

r - 在 R 中,在字符串数据框列中的 % 符号之前提取数字值

转载 作者:行者123 更新时间:2023-12-05 02:31:23 25 4
gpt4 key购买 nike

在下面的数据框中,我正在尝试构建一个新列“avcomp”,如果 duty_nature 是“M”或“C”,它会从“code”列中提取空格和 % 符号之间的数值.我尝试了下面的代码,但它只能获得前两个数字和百分号。你能帮忙吗?

avcomp 列应该是

>[1] "30", "0.50, ""

谢谢!

code <- c("Greater than 30% of something","Less than 0.50% of something","30%")
duty_nature<- c("M","C","A")
test <-data.frame(code,duty_nature)

test$avcomp <- ifelse(test$duty_nature == "M" | test$duty_nature == "C",str_sub(str_match(test$code,"\\s*(.*?)%\\s*"),-4,-1),"")

最佳答案

正则表达式模式 [0-9]+[.]?[0-9]*(?=%) 匹配小数点后跟百分号的任何数字(向前看):

library(tidyverse)
code <- c("Greater than 30% of something", "Less than 0.50% of something", "30%")
duty_nature <- c("M", "C", "A")
test <- data.frame(code, duty_nature)

test %>%
mutate(
avcomp = ifelse(
duty_nature %in% c("M", "C"),
code %>% str_extract("[0-9]+[.]?[0-9]*(?=%)") %>% as.numeric(),
NA
)
)
#> code duty_nature avcomp
#> 1 Greater than 30% of something M 30.0
#> 2 Less than 0.50% of something C 0.5
#> 3 30% A NA

reprex package 创建于 2022-03-21 (v2.0.0)

关于r - 在 R 中,在字符串数据框列中的 % 符号之前提取数字值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71557292/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com