首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在R中将"> 1200“更改为1200?

如何在R中将"> 1200“更改为1200?
EN

Stack Overflow用户
提问于 2016-12-13 17:14:56
回答 4查看 83关注 0票数 2

我们有一个数据集,其中包含限制在某个范围内的数值。当这些值超出该范围时,它们将被简化为">1200""<75"

我们希望以自动方式将这些值更改为最大值或最小值。因此,">1200"应该成为1200"<75"应该成为75

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[153] 240   645   85    235   >1200 715   235   150
EN

回答 4

Stack Overflow用户

发布于 2016-12-13 17:15:53

我们可以使用gsub来匹配<>的一个或多个实例,替换为空的""并转换为数字。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
as.numeric(gsub("[<>]+", "", v1))
#[1]  240  645   85  235 1200  715  235  150   75

如果只有一个实例,我们也可以使用sub

数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
v1 <- c(240,   645,   85,    235,   '>1200', 715,   235,   150, '<75')
票数 3
EN

Stack Overflow用户

发布于 2016-12-13 17:38:42

我个人喜欢依赖尽可能多的软件包,因为我是一个受虐狂,所以如果我是你,我会使用readr::parse_number()

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> readr::parse_number(v1)
[1]  240  645   85  235 1200  715  235  150
票数 3
EN

Stack Overflow用户

发布于 2016-12-13 17:50:41

或者,我们可以从向量中提取所有数字并将其转换为数字

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
as.numeric(regmatches(x, gregexpr("[[:digit:]]+", x)))

#[1] 240  645   85  235 1200  715  235  150

或者我们也可以使用tidyr包中的extract_numeric

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(tidyr)
extract_numeric(x)

#[1] 240  645   85  235 1200  715  235  150
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41126875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文