r - 将因子转换为整数
问题描述
我正在使用工资变量分析一些数据。该变量包含符号“€”和“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)
}
实际值如下所列:
$ 工资 /fct/ €405K, €195K, €205K, €240K, €175K, €25K, €205K, €57K, €140K, €135K, €15K, €45K, €40K, €76K, €17K, 12.5 万欧元,……</p>
我想把它转换成
$ 工资 /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.076, 0.017, 0.125, ...<a href="https://i.stack .imgur.com/SEzY2.png" rel="nofollow noreferrer">在此处输入图片描述
解决方案
我们可以使用parse_number
fromreadr
提取数字并除以 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)
如果除了“K”还有“M”,我们可以使用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"))
推荐阅读
- android - 如何使解析后的颜色变浅?
- python - 如何在 Python 中解析非英语混合文本
- sql - 如何从 SQL Server 的几行中获取值最小的列的名称?
- c++ - 静态库缺少 `__imp_` 符号
- embedded-linux - PCIe PIC_INTERRUPT_PIN (0x3c) 为 0
- image - 是否可以通过对具有各种不同模式的给定图像进行采样来压缩图像?
- asp.net-mvc - 使用 ngrok 创建 websocket
- memory - CubeMX stm32 FreeRTOS + USB 主机 MSC 用于 USB 闪存
- c# - C# DLLImport“内联”
- java - 如何在 IST 从星期六早上 6 点到星期一下午 6 点每 5 分钟运行一次 cron 作业?