R - 识别哪些列包含货币数据 $

2024-03-24

我有一个非常大的数据集,其中一些列格式为货币,一些数字,一些字符。读取数据时,所有货币列都被识别为因子,我需要将它们转换为数字。数据集太宽,无法手动识别列。我试图找到一种编程方法来识别列是否包含货币数据(例如以“$”开头),然后传递要清理的列列表。

name <- c('john','carl', 'hank')
salary <- c('$23,456.33','$45,677.43','$76,234.88')
emp_data <- data.frame(name,salary)

clean <- function(ttt){
as.numeric(gsub('[^a-zA-z0-9.]','', ttt))
}
sapply(emp_data, clean)

此示例中的问题是此 sapply 适用于所有列,导致名称列被替换为 NA。我需要一种方法来以编程方式识别需要应用 clean 函数的列..在此示例工资中。


Using dplyr and stringr包,你可以使用mutate_if识别具有以 a 开头的任何字符串的列$然后进行相应的更改。

library(dplyr)
library(stringr)

emp_data %>%
  mutate_if(~any(str_detect(., '^\\$'), na.rm = TRUE),
            ~as.numeric(str_replace_all(., '[$,]', '')))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R - 识别哪些列包含货币数据 $ 的相关文章

随机推荐