如何解决解析不同长度的字符串
我正在尝试解析估算的薪水字符串以创建一个名为“ 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
解决方法
我们可以使用trimws
和substr
将其缩短。在这里,我们将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)))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。