R中的字符到数字转换问题

  • 本文关键字:数字 转换 问题 字符 r
  • 更新时间 :
  • 英文 :


我有一个大的时间序列数据集,其中数字结果以General格式存储在MS-Excel中。我尝试过使用gsub(",", "", dummy ),但它不起作用。数据集没有任何,或除小数点之外的任何其他可见特殊字符,Rdatatype作为character。值为positivenegative,其中有一个NA,并且所有值都有不同的小数位数。

转换为数字后,如何在不必处理N/As的情况下进行转换。不过,需要注意的一点是,当转换为数字时,一些值以科学记数法显示,如12.1 e+03和其他具有四位小数的值。

dummy = c("12.1", "42000", "1.2145", "12.25", N/A, "323.369", "-1.235", "335", "0")
# Convert to numeric   
dummy = gsub(",", "", dummy ) 
dummy = as.numeric(dummy )

错误

Warning message:
NAs introduced by coercion "

N/A更改为NA解决了这个问题:

# N/A to NA
dummy = c("12.1", "42000", "1.2145", "12.25", NA, "323.369", "-1.235", "335")
# Convert to numeric
dummy = gsub(",", "", dummy) 
dummy = as.numeric(dummy)

要对整个数据集执行此操作,您可以使用:

# Across columns (for matrices)
data <- apply(data, 2, function(x){
ifelse(x == "N/A", NA, x)
})
# Then convert characters to numeric (for matrices)
data <- apply(data, 2, as.numeric)
# Across columns (for data frames)
data <- lapply(data, function(x){
ifelse(x == "N/A", NA, x)
})
# Then convert characters to numeric (for data frames)
data <- lapply(data, as.numeric)

更新:R中对象类型的*apply差异——感谢用户20650指出

最新更新