我有一个非常大的数据集,其中一些列格式为货币,一些数字,一些字符.在读取数据时,所有货币列都被标识为因子,我需要将它们转换为数字.数据集太宽,无法手动识别列.我试图找到一种编程方式来识别列是否包含货币数据(例如,以'$'开头),然后传递要清理的列列表.
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)
Run Code Online (Sandbox Code Playgroud)
此示例中的问题是,此sapply适用于所有列,导致name列替换为NA.我需要一种方法来以编程方式识别clean函数需要应用于的列...在此示例中为salary.