如何将具有数字值的 char 数据类型的列转换为数字数据类型

Posted

技术标签:

【中文标题】如何将具有数字值的 char 数据类型的列转换为数字数据类型【英文标题】:How to convert columns having char datatype with numeric values to numeric datatype 【发布时间】:2017-03-24 11:00:04 【问题描述】:
    $Budget(chr)"3,000.00", "2,000.00", "2,000.00"...  
    $Impressions(int) 0, 0, 0, 0...  
    $Interactions(int) 0, 0, 0...  
    $Interaction.Rate(chr) "0.00%", "0.00%", "0.00%"...  
    $Avg..Cost (dbl) 0, 0, 0, 0, 0, 0, 0...  
    $Cost(chr) "0", "0", "0", "0"...  
    $Clicks(int) 0, 0, 0, 0...  
    $CTR(chr) "0.00%", "0.00%", "0.00%"...  

我有一些列。它们都有数值,但是当我在 R 中导入它们时,它们似乎是字符数据类型。我想将这些字符转换为整数,并从具有它们的列中删除 % 符号.

    mData=mData %>%
    mutate(Budget=as.numeric(Budget),  
    Interaction.Rate=as.numeric(gsub("%","",Interaction.Rate)),  
    Cost=as.numeric(Cost),  
    CTR=as.numeric(gsub("%","",CTR)))  

我试过这样做但没有结果反而给了我错误:

警告信息:在 eval(substitute(expr), envir, enclos) : NAs 强制引入

谁能帮我解决这个问题

【问题讨论】:

How to convert a data frame column to numeric type?的可能重复 您需要从Budget 列中删除逗号以及gsub。另一种可能性是使用readr-package 中的parse_number-function。 【参考方案1】:

您可以使用transform 将它们转换回numeric

transform(mData, Budget= as.numeric(Budget), Interaction.Rate = as.numeric(nteraction.Rate), ...)

要删除 ,% 使用 gsub(从 here 得到想法)

 mData$Budget<- as.numeric(gsub("," ,"" ,mData$Budget))

【讨论】:

以上是关于如何将具有数字值的 char 数据类型的列转换为数字数据类型的主要内容,如果未能解决你的问题,请参考以下文章

如何使用pyspark将具有多个可能值的Json数组列表转换为数据框中的列

如何将具有排名值的列转换为oracle中的行

数据类型从 varchar2 到日期、数字等的隐式转换

如何将具有十进制值的数字转换为PL / SQL中的浮点数?

在 Spark SQL 中将 long 类型的列转换为 calendarinterval 类型

如何在 Spark 数据框中添加具有序列值的列?