解析不同长度的字符串

问题描述

我正在尝试解析估算的薪水字符串以创建一个名为“ Salary.Min”的新字段,该字段应为数字值。看起来很简单,我可以使用快速的case语句在SQL中处理此问题,但在转换为R时遇到了麻烦。

我是否需要在此处使用for循环,还是有一种更有效/更简单的方法?通常,我正在寻找类似于“如果字符串中的第四个字符= K,然后返回字符2:3,否则返回字符2:4”

此代码起初似乎还不错,但在验证之后我意识到它消除了所有记录,其中第四个字符= K(即最低薪水$ 100k +)

>  ifelse(   
>    substr(data_public$Salary.Estimate,4,4) == "K",>        data_public$Salary.Min<- substr(data_public$Salary.Estimate,2,3),4))

我的Salary.Estimate值范围很广,例如: a)$ 105K-$ 115K b)$ 89K-$ 95K c)$ 78K-$ 85K

解决方法

我们可以使用trimwssubstr将其缩短。在这里,我们将substr从2个字符转换为4个字符,并将whitespace中的trimws指定为'K',其中which = 'right'表示要匹配尾随字符>

data_public$Salary.Min <- trimws(substr( data_public$Salary.Estimate,2,4),which = 'right',whitespace = "K")

或者我们可以使用sub

sub("^.(..)K?.","\\1",data_public$Salary.Estimate)

ifelse代码中,分配应在ifelse之外

data_public$Salary.Min<- with(data_public,ifelse(substr(Salary.Estimate,4,4) == "K",substr(Salary.Estimate,3),4)))
  

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...