2015-11-02 41 views
1

字符串和數字我在Excel數據庫,看起來像這樣:導入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)) - 但很多專欄變得非常累人。

如何在不使用此類技巧的情況下直接上傳?

+1

你能嘗試'庫(readxl);read_excel('yourfile.xlsx')# 名稱注意值1值2 (chr)(chr)(dbl)(dbl) 1 Adidas first 1.74e-06 1.06e-07'它通過複製/粘貼示例工作。 – akrun

+0

工作。我很驚訝它使用'read_excel',但它沒有'xlsx2'。謝謝 – Ilja

+0

@llja我還沒有用'xlsx2'嘗試過..一種可能是你指定了'colClasses ='numeric'而不是'colClasses = c('character','character','numeric','numeric' )'。我猜測它會將「數字」循環到每一列,因爲第一列顯然不是「數字」,整列將得到第一列的類別。 – akrun

回答

0

我們可以使用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 

正如我在評論中提到的,如果我們使用的是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