【问题标题】:Trying to convert a "chr" column to numeric leads to column full of NAs in R [duplicate]尝试将“chr”列转换为数字会导致 R 中的列充满 NA [重复]
【发布时间】:2020-04-09 19:04:28
【问题描述】:

提前感谢您的帮助!

我需要将 x.1 列转换为数字,以便在其中包含双浮点数。

我做了什么: 1. 我用以下方式导入数据: training <- read.csv("training_grover.csv", stringsAsFactors = FALSE, sep = ";")

  1. str(training)

结果:data.frame': 2671 obs. of 22 variables: $ X : int 0 1 2 3 4 5 6 7 8 9 ... $ x.0 : chr "b" "a" "a" "b" ... $ x.1 : chr "30,83" "58,67" "24,5" "27,83" ... $ x.2 : chr "f" "4.46" "0.5" "1.54" ... $ x.3 : chr "u" "u" "u" "u" ... $ x.4 : chr "g" "g" "g" "g" ... $ x.5 : chr "w" "q" "q" "w" ... $ x.6 : chr "v" "h" "h" "v" ... $ x.7 : chr "1.25" "3.04" "1.5" "3.75" ... $ x.8 : chr "t" "t" "t" "t" ... $ x.9 : chr "t" "t" "f" "t" ... $ x.10: chr "t" "6" "f" "5" ... $ x.11: chr "f" "f" "f" "t" ... $ x.12: chr "g" "g" "g" "g" ... $ x.13: chr "202.0" "43.0" "280.0" "100.0" ... $ x.14: chr "f" "560" "824" "3" ... $ x.20: chr "t" "t" "t" "t" ... $ x.17: chr "116,94256980957068" "225,60625307204938" "92,08407670672422" "104,16291777029285" ... $ x.18: chr "0,5787085579422866" "25,409645364400404" "2,3173371593153314" "8,04533772976642" ... $ x.19: chr "202000.0" "43000.0" "280000.0" "100000.0" ... $ x.16: chr "f" "f" "f" "f" ... $ y : chr "good" "good" "good" "good" ..

  1. 我尝试将 x.1 列转换为数字:

    training$x.1=as.numeric(training$x.1) 结果我得到了充满 NA 的 x.1

动作:

一个。我再次导入文件

b.我从 x.1 中删除了“,”: str_replace_all(training$x.1, ",", ".")

c。再次尝试转换 x.1 列: training$x.1=as.numeric(training$x.1) 结果,我仍然得到充满 NA 的 x.1

d。再次导入文件

e。我从 x.1 中删除了“,”: str_replace_all(training$x.1, ",", ".")

f。再次尝试转换 x.1 列: training$x.1= as.numeric(as.factor(training$x.1))。 结果:x.1 列仍然充满了 NA。

我在这里做错了什么? 谢谢!

【问题讨论】:

    标签: r char type-conversion numeric


    【解决方案1】:

    可能有多种方法可以在导入后对数据进行后处理,但您可以通过正确导入数据来修复第一步。使用dec = "," 指定用于表示小数点的字符。

    training <- read.csv("training_grover.csv", stringsAsFactors = FALSE, sep = ";", dec = ",")
    

    这些设置在read.csv2 中是默认设置

    training <- read.csv2("training_grover.csv", stringsAsFactors = FALSE)
    

    【讨论】:

    • 谢谢你,罗纳克!我之前已经尝试过您的解决方案,但没有结果。
    【解决方案2】:

    也许你可以试试下面的代码进行类型转换

    training$x.1 <- as.numeric(gsub(",","\\.",training$x.1))
    

    【讨论】:

    • 谢谢您,ThomalsCoding!你的代码解决了我的问题。Hua!
    • 你能解释一下“\\.”的用法吗?在 gsub() 中?谢谢!
    • @myhy 就是把","换成".",需要转义"."经过 ”\\。”对于正则表达式
    猜你喜欢
    • 1970-01-01
    • 2019-07-18
    • 1970-01-01
    • 1970-01-01
    • 2019-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多