如何解决更改R中的整个列
我有一个数据框,其中一栏看起来像这样:
structure(list(Concentration = c("XY309 ref 6M","XY309 ref 5M","XY309 ref 4M","XY309 ref 3.5M","XY309 ref 3M","XY309 ref 2.5M","XY309 ref 2M","XY309 ref 1M","XY309 ref 0M","XY309 SD 6M","XY309 SD 5M","XY309 SD 4M","XY309 SD 3.5M","XY309 SD 3M","XY309 SD 2.5M","XY309 SD 2M","XY309 SD 1M","XY309 SD 0M")),row.names = c(NA,18L),class = "data.frame")
我想更改整个列,使其仅包含最后的数值(6、5、4、3.5等),而不包含“ M”。像这样:
structure(list(Concentration = c("6","5","4","3.5","3","2.5","2","1","0","6","0"
)),class = "data.frame")
我还需要该解决方案适用于该列具有不同字符串的其他数据集,这些字符串带有“ M”且结尾处的数值始终存在。
我将如何利用regex
(或其他方式)解决此问题?
非常感谢您的帮助!
解决方法
您可以使用str_extract
提取数字:
as.numeric(stringr::str_extract(df$Concentration,'\\d+(\\.\\d+)?(?=M)'))
#[1] 6.0 5.0 4.0 3.5 3.0 2.5 2.0 1.0 0.0 6.0 5.0 4.0 3.5 3.0 2.5 2.0 1.0 0.0
\\d+
-1位或超过1位数字
(\\.\\d+)?
-可选的十进制值
(?=M)
-查找文字"M"
的积极前瞻。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。