从具有R的字符变量中提取最小值和最大值



我有一个df,其中一个变量包含多个字符作为单位和值,如下所示

[525] "8 µg/ml"
[526] "16 µg/ml - 32 µg/ml - 200 µg/ml - 500 µg/ml - 1000 µg/ml"
[527] "5 µg/ml - 10 µg/ml - 250 µg/ml"
[528] "20 µg/ml"
[529] "16 µg/ml"
[530] "60 µg/ml"                                                

我想在另外两个不同的变量中从这个变量中提取两个值(最小值和最大值(当只有一个值可用时,我希望默认实现min我已经尝试过使用str_extracted,但我相信你会有更有价值的建议或解决方案感谢大家的帮助最佳

您可以使用str_extract_all从字符串中提取所有数字,然后使用range返回最小值和最大值。

mat <- t(sapply(stringr::str_extract_all(x, '\d+'), function(x) 
range(as.numeric(x))))
mat[mat[, 1] == mat[, 2], 2] <- NA
mat
#     [,1] [,2]
#[1,]    8   NA
#[2,]   16 1000
#[3,]    5  250
#[4,]   20   NA
#[5,]   16   NA
#[6,]   60   NA

数据

x <- c("8 µg/ml", "16 µg/ml - 32 µg/ml - 200 µg/ml - 500 µg/ml - 1000 µg/ml", 
"5 µg/ml - 10 µg/ml - 250 µg/ml", "20 µg/ml", "16 µg/ml", "60 µg/ml")

相关内容

  • 没有找到相关文章

最新更新