Преобразование коэффициента в целое число - PullRequest
1 голос
/ 31 марта 2019

Я работаю над анализом некоторых данных с использованием переменных заработной платы.Переменная содержит символы '€' и 'M' или 'K'.

Я пытался использовать функцию gsub () для решения этой проблемы, но мой код не работает

Integer_converter <- function(strWage) { 
  Factor_Wage = gsub("€", " ", strWage)
}

Factor_converter_1 <- function(strWage) {
  Integer_Wage = gsub("M", " ", strWage)
}

Factor_converter_2 <- function(strWage) {
  Integer_wage = as.integer(as.integer(gsub("K", "", strWage)) / 100) 
}

Фактические значения указаны следующим образом:

$ Заработная плата / фт / 405 тыс. Евро, 195 тыс. Евро, 205 тыс. Евро, 240 тыс. Евро, 175 тыс. Евро, 25 тыс. Евро, 205 тыс. Евро, 57 тыс. Евро, 140 тыс. Евро, 135 тыс. Евро, € 15K, € 45K, € 40K, € 76K, € 17K, € 125K,…

, и я хочу преобразовать его в

$ Wage / int / 0,405, 0,195, 0,205,0,240, 0,175, 0,025, 0,205, 0,057, 0,140, ​​0,135, 0,015, 0,045, 0,040, 0,07, 0,017, 0,125,… введите описание изображения здесь

1 Ответ

1 голос
/ 31 марта 2019

Мы можем использовать parse_number из readr, чтобы извлечь число и разделить на 1000.

library(readr)
parse_number(as.character(df1$Wage))/1000
#[1] 0.405 0.195 0.205 0.240 0.175 0.025 0.205 0.057 0.140 
#[10] 0.135 0.015 0.045 0.040 0.076 0.017 0.125

Извлекает числовую часть, а затем просто делит на 1000


Это также можно сделать с помощью tidyverse цепочки

library(dplyr)
df1 %>%
   mutate(Wage = parse_number(as.character(Wage))/1000)

Если есть «M» в дополнение к «K», мы можем использовать gsubfn

library(gsubfn)
unname(sapply(gsubfn("[A-Z]", list(K = '/1e3', M = '/1e6'), 
       sub("€", "", df2$Wage)), function(x) eval(parse(text = x))))

данные

df1 <- data.frame(Wage = c("€405K", "€195K", "€205K", "€240K", "€175K",
  "€25K", "€205K", "€57K",  "€140K", "€135K", "€15K", "€45K",
     "€40K", "€76K", "€17K", "€125K"))

df2 <- data.frame(Wage = c("€405K", "€195K", "€205K", "€240K", "€175K",
  "€25K", "€205K", "€57K",  "€140K", "€135K", "€15M", "€45K",
     "€40K", "€76K", "€17M", "€125K"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...