【问题标题】:R does not import values as numbersR 不会将值作为数字导入
【发布时间】:2019-02-07 11:14:55
【问题描述】:

基本数据是使用 SQL 查询生成的,目的是在 R 中处理数据。但是,在从 .csv.xlsx 导入时,尽管更改了数据类型,R 还是将数字作为字符导入内置的import 工具。此外,在执行基本算术运算时,遇到以下错误: In Ops.factor((data$A), (data$B)) :‘/’ not meaningful for factors

有没有简单的方法来解决这个问题?

  • 使用str() 函数分析数据集,结果显示R 将特定列导入为factors
  • 使用包 varhandle 和函数 unfactor 对数据进行分解
  • as.numeric 用于读取为characters 而不是factors 的某些列
  • 在导入之前尝试在 Excel 中更改数据类型

    data$A <- unfactor(data$A)

    data$B <- unfactor(data$B)

    data$PERCENTAGE <- (data$B)/(data$A)*100

R 可以通过什么方式导入指定数据类型的数据?

提前感谢您的帮助!

【问题讨论】:

  • 您能否提供您的数据样本 (dput(data))?
  • 可能您使用的是read.csv,但未指定stringsAsFactors=FALSE
  • 提供some example data 会有所帮助。几乎可以肯定,您认为是数字的列包含字符,这导致转换为因子,因为未指定 stringsAsFactors = FALSE
  • 我尝试使用 stringsAsFactors = F ,但收到以下错误 non-numeric argument to binary operator
  • 再次,将有助于查看用于读取数据的命令。

标签: r type-conversion


【解决方案1】:

对于 csv 文件,我会推荐 Hadley Wickham 出色的 Tidyverse package 中的 read_csv。它具有智能默认值,可以处理我扔给它的大多数东西。

对于 .xlsx,有 read_excel,也来自 Tidyverse 包(还有其他可用的包)。 或者,也可以从 Excel 中导出 .csv 文件并使用 read_csv。

[请注意,Tidyverse 会将这些文件导入为“tibble”,它本质上是类固醇上的数据框,没有一些令人头疼的问题,但如果您愿意,可以轻松转换为 data.frame。]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多