【问题标题】:R: Importing read.csv with numeric format [closed]R:以数字格式导入 read.csv [关闭]
【发布时间】:2017-04-21 21:57:34
【问题描述】:

用 R 读取 CSV 数据,第 11 列的数据格式为“1,022.00”和“516.00”,它们必须是“numerics”或“double”

dados201702 <- read.csv("dataset.csv", 
                        header = TRUE, 
                        sep = "\t", 
                        dec = ".",
                        colClasses = c("character", 
                                       "character", 
                                       "character", 
                                       "character", 
                                       "character", 
                                       "character", 
                                       "character", 
                                       "character", 
                                       "character", 
                                       "character", 
                                       "numeric",
                                       "character"))

我想将第 11 列导入为数字或双精度,但出现错误:

扫描错误(file = file,what = what,sep = sep,quote = quote,dec = dec,scan() 预期为 'a real',得到 '1,022.00'

【问题讨论】:

  • 向我们展示一些可以使用的示例数据
  • 请澄清你想问什么。您可能想查看asking guidelines,特别是minimal, complete, and verifiable examples 部分。
  • 我想将第 11 列导入为数字或双精度,但出现错误:“扫描错误(文件 = 文件,内容 = 内容,s​​ep = sep,quote = quote,dec = dec,scan()预期“真实”,得到“1,022.00””
  • 将该列作为字符读取然后在同一步骤中将该列转换为数字会有很大的缺点吗?即dados201702$column11 %&lt;&gt;% as.numeric

标签: r csv


【解决方案1】:

您的数据看起来好像包含一个 1000 秒的分隔符,而 , 会给您带来问题。您可以阅读data.frame 并使用gsub 转换相关列,也可以按照以下链接之一的建议定义新的类定义:

这里我们定义了一个删除逗号(1000 分隔符)的新类。

setClass("MyNum")
setAs("character", "MyNum", 
      function(from) as.numeric(gsub(",", "", from) ))
indata <- read.csv("tst.txt", , 
                   header = TRUE, 
                   sep = "\t", 
                   dec = ".", 
                   colClasses=c(rep("character", 10), "MyNum", "character"))

或者只使用as.numeric(gsub(",", "", from) ),其中from是包含1000s分隔符的向量。

【讨论】:

    猜你喜欢
    • 2023-03-24
    • 1970-01-01
    • 2021-10-18
    • 1970-01-01
    • 1970-01-01
    • 2020-07-22
    • 2014-08-22
    • 1970-01-01
    相关资源
    最近更新 更多