【问题标题】:Import Excel with strings and numbers in exponential writing以指数形式导入带有字符串和数字的 Excel
【发布时间】:2015-11-02 13:31:07
【问题描述】:

我在 Excel 中有一个如下所示的数据库:

Name    Note    Value1    Value2
Adidas  first   1.74E-06  1.06E-07

以此类推,有数千行和一堆带有值的列。

但是,当我使用:

data<-read.xlsx2("data.xlsx",header = T,sheetIndex = 1,colClasses="numeric")

它以字符串形式返回所有内容:

is.numeric(data$X1)

[1] FALSE

到目前为止,我是这样处理它的:as.numeric(as.character(data$X1)) - 但是有很多列它变得非常累。

如何不使用这种技巧直接直接上传?

【问题讨论】:

  • 你可以试试library(readxl); read_excel('yourfile.xlsx')# Name Note Value1 Value2 (chr) (chr) (dbl) (dbl) 1 Adidas first 1.74e-06 1.06e-07它通过复制/粘贴示例来工作。
  • 那行得通。我很惊讶它与read_excel 一起工作,但它没有与xlsx2 一起工作。谢谢
  • @llja 我没有尝试使用xlsx2.. 一种可能性是您指定了colClasses='numeric 而不是colClasses=c('character', 'character', 'numeric', 'numeric')。我猜它会将“数字”循环到每一列,并且由于第一列显然不是“数字”,所以整个列都得到了第一列的类。

标签: r excel load xlsx


【解决方案1】:

我们可以使用read_excel

 library(readx)
 read_excel('file1.xlsx')
 #   Source: local data frame [1 x 4]

 #    Name  Note   Value1   Value2
 #   (chr) (chr)    (dbl)    (dbl)
 #1 Adidas first 1.74e-06 1.06e-07

正如我在 cmets 中提到的,如果我们使用 colClasses,那么我们需要为整个列指定它

library(xlsx)
str(read.xlsx2('file1.xlsx', sheetIndex=1, colClasses=c('character', 
         'character', 'numeric', 'numeric'), stringsAsFactors=FALSE))
#   'data.frame':   1 obs. of  4 variables:
#  $ Name  : chr "Adidas"
#  $ Note  : chr "first"
#  $ Value1: num 1.74e-06
#  $ Value2: num 1.06e-07

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-30
    • 2017-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-14
    • 1970-01-01
    相关资源
    最近更新 更多