我有一个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")