Чистый спецсимвол, цифра и символ - PullRequest
0 голосов
/ 30 июня 2018

У меня есть переменная, как показано ниже в моем фрейме данных

df$emp_length(10+ years, <1 year, 8 years)

Мне нужно очистить эту переменную для лучшего анализа. Например, я хочу сравнить эту переменную с другой категориальной или числовой переменной. Каков наилучший способ разделения этой переменной на несколько столбцов.

Я думаю разделить эту переменную на основе пространства, как показано ниже,

df$emp_length = c(10+, <1, 8)     
df$years = c(years, years, years)

Также мне хотелось бы знать, будет ли число со специальными символами, такими как + и <, считаться числовым в R, или я должен разделять специальные символы и цифры? </p>

Я хочу, чтобы переменная emp_length была числовой, а переменная лет - символом.

Пожалуйста, помогите!

1 Ответ

0 голосов
/ 30 июня 2018

Можно использовать 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...