代码之家  ›  专栏  ›  技术社区  ›  Ed_Gravy

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

r
  •  0
  • Ed_Gravy  · 技术社区  · 4 年前

    我有一个大的时间序列数据集,其中数字结果存储在 General 格式 MS-Excel .我试过用 gsub(",", "", dummy ) ,但它不起作用。数据集没有任何 , 或小数点以外的任何其他可见特殊字符,以及 R 拿起话筒 datatype character .价值观是 positive negative 有一个 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 "
    
    1 回复  |  直到 4 年前
        1
  •  1
  •   Alexander Christensen    4 年前

    改变 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
    data <- apply(data, 2, function(x){
    ifelse(x == "N/A", NA, x)
    })
    
    # Then convert characters to numeric
    data <- apply(data, 2, as.numeric)