使用 R 从字符变量中提取最小值和最大值

Extract min and max value from a character variable with 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"                                                

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

您可以使用 str_extract_all 从字符串中提取所有数字,然后使用 range.

return 最小值和最大值
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")