我们有一个数据集,其中包含限制在某个范围内的数值。当这些值超出该范围时,它们将被简化为">1200"
和"<75"
。
我们希望以自动方式将这些值更改为最大值或最小值。因此,">1200"
应该成为1200
,"<75"
应该成为75
[153] 240 645 85 235 >1200 715 235 150
发布于 2016-12-13 17:15:53
我们可以使用gsub
来匹配<
或>
的一个或多个实例,替换为空的""
并转换为数字。
as.numeric(gsub("[<>]+", "", v1))
#[1] 240 645 85 235 1200 715 235 150 75
如果只有一个实例,我们也可以使用sub
数据
v1 <- c(240, 645, 85, 235, '>1200', 715, 235, 150, '<75')
发布于 2016-12-13 17:38:42
我个人喜欢依赖尽可能多的软件包,因为我是一个受虐狂,所以如果我是你,我会使用readr::parse_number()
:
> readr::parse_number(v1)
[1] 240 645 85 235 1200 715 235 150
发布于 2016-12-13 17:50:41
或者,我们可以从向量中提取所有数字并将其转换为数字
as.numeric(regmatches(x, gregexpr("[[:digit:]]+", x)))
#[1] 240 645 85 235 1200 715 235 150
或者我们也可以使用tidyr
包中的extract_numeric
library(tidyr)
extract_numeric(x)
#[1] 240 645 85 235 1200 715 235 150
https://stackoverflow.com/questions/41126875
复制相似问题