r - 清除特殊字符、数字和字符
问题描述
我的数据框中有一个如下所示的变量
df$emp_length(10+ years, <1 year, 8 years)
我需要清理这个变量以便更好地分析。例如,我想将此变量与其他分类或数值变量进行比较。将此变量分成多列的最佳方法是什么。
我正在考虑根据空间来分隔这个变量,如下所示,
df$emp_length = c(10+, <1, 8)
df$years = c(years, years, years)
另外我想知道带有特殊字符(如 + 和 <)的数字是否会被视为 R 中的数字,或者我必须将特殊字符和数字分开?
我想将 emp_length 变量作为数字,将 years 变量作为字符。
请帮忙!
解决方案
一个人可以tidyr::extract
用来首先emp_length
在 2 列中分开。然后用数字替换任何符号(除 之外的任何符号0-9
)到""
列中,然后将其转换为数字。
选项#1:用数字保留符号
library(tidyverse)
df <- df %>% extract(emp_length, c("emp_length", "years"),
regex="([[:digit:]+<]+)\\s+(\\w+)")
df
# emp_length years
# 1 10+ years
# 2 <1 year
# 3 8 years
选项#2:只有数字,但列是数字
library(tidyverse)
df <- df %>%
extract(emp_length, c("emp_length", "years"), regex="([[:digit:]+<]+)\\s+(\\w+)") %>%
mutate(emp_length = as.numeric(gsub("[^0-9]","\\1",emp_length)))
df
# emp_length years
# 1 10 years
# 2 1 year
# 3 8 years
数据:
df <- data.frame(emp_length = c("10+ years", "<1 year", "8 years"),
stringsAsFactors = FALSE)
推荐阅读
- javascript - 仅在 iPhone 上返回结果中的croppie.js 空白图像
- python - 水平连接两个图像 - 结果为一个黑色图像
- excel - 在 Excel 表中计算现金余额的宏
- reactjs - 由 useMediaQuery 引起的延迟文本字段?
- web-scraping - 如何关闭scrapy中的pypeeter登录?
- python - 如何使用 FFmpeg 从视频中剪切/删除特定的未解码 h.264(关键)帧?
- c# - 使用 LINQ 在包含负数和正数的列中查找负数的平均值
- javascript - 多维数组替换为近距离 Javascript
- c# - EF Core 多线程问题
- ios - 如何设置背景显示全屏?