【问题标题】:Extract min and max value from a character variable with R使用R从字符变量中提取最小值和最大值
【发布时间】:2021-03-09 05:25:30
【问题描述】:

我有一个 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 但我相信你会有更多有价值的建议或解决方案 感谢大家的帮助 最好的

【问题讨论】:

    标签: r arrays max character min


    【解决方案1】:

    您可以使用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")
    

    【讨论】:

    • 这是一种非常有效的方法,但您能详细说明一下过程吗?
    • 非常感谢 Ronack,它很有帮助 如果我想用 NA 替换 max 当它等于 min 时,你的建议是什么,换句话说,当原始变量 i 中只有一个信号值时想保持最小
    • @Ronack,您的更新非常完美,再次感谢您的宝贵帮助
    猜你喜欢
    • 1970-01-01
    • 2021-07-30
    • 2021-06-20
    • 1970-01-01
    • 2013-04-09
    • 1970-01-01
    • 1970-01-01
    • 2019-11-22
    • 2014-09-04
    相关资源
    最近更新 更多