2013-08-16 3 views
6

colClasses numaralı argümanın neden read.xlsx numaralı telefonunda işe yaramadığını biliyor mu?read.xlsx ve colClasses

> d2 = read.xlsx('test.xlsx', sheetName='Sheet1') 
> str(d2) 
'data.frame': 3 obs. of 4 variables: 
$ A: Factor w/ 3 levels "A","B","C": 1 2 3 
$ B: Factor w/ 3 levels "a","b","c": 1 2 3 
$ C: num 1 2 3 
$ D: num 1.1 NA NA 
> d2 = read.xlsx('test.xlsx', sheetName='Sheet1', colClasses=c(B='character', 'A'='character')) 
> str(d2) 
'data.frame': 3 obs. of 4 variables: 
$ A: Factor w/ 3 levels "A","B","C": 1 2 3 
$ B: Factor w/ 3 levels "a","b","c": 1 2 3 
$ C: num 1 2 3 
$ D: num 1.1 NA NA 

sorun colClasses hiçbir etkisi var gibi gözüküyor edilir: olmadan ve colClasses argümanı ile

sonra
> library(xlsx) 
> d1 = data.frame(A=LETTERS[1:3], B=letters[1:3], C=1:3, D=c(1.1, NA, NA)) 
> str(d1) 
'data.frame': 3 obs. of 4 variables: 
$ A: Factor w/ 3 levels "A","B","C": 1 2 3 
$ B: Factor w/ 3 levels "a","b","c": 1 2 3 
$ C: int 1 2 3 
$ D: num 1.1 NA NA 
> write.xlsx(d1, 'test.xlsx', sheetName='Sheet1', row.names=F, showNA=F) 

read.xlsx ile okumaya çalışacak:

bir örnek * .xlsx dosyası oluşturmak . Herhangi bir fikir?

Yardımlarınız için teşekkür ederim.

Aleksey

Not; R 3.0.1, xlsx 0.5.1

cevap

9

colClasses= çalışıyor, ancak sorun, veri aktarımı karakter sütunlarını faktöre dönüştürmek olduğunda sistem varsayılan eyleminizdir.

test.xlsx'u içe aktarırsanız ve tüm sütunların "character" olması gerektiğini ayarladıysanız, tüm sütunların faktörler (ayrıca sayılar) olarak yapıldığını görürsünüz.

d2 = read.xlsx('test.xlsx', sheetName='Sheet1', colClasses=rep("character",4)) 
str(d2) 
'data.frame': 3 obs. of 4 variables: 
$ A: Factor w/ 3 levels "A","B","C": 1 2 3 
$ B: Factor w/ 3 levels "a","b","c": 1 2 3 
$ C: Factor w/ 3 levels "1","2","3": 1 2 3 
$ D: Factor w/ 1 level "1.1": 1 NA NA 

karakter read.xlsx() çalışması için size argüman stringsAsFactors=FALSE ekleyebilir faktörlere dönüştürülmemiş emin olmak için.

d2 = read.xlsx('test.xlsx', sheetName='Sheet1', 
       colClasses=c(B='character', A='character'),stringsAsFactors=FALSE) 

str(d2) 
'data.frame': 3 obs. of 4 variables: 
$ A: chr "A" "B" "C" 
$ B: chr "a" "b" "c" 
$ C: num 1 2 3 
$ D: num 1.1 NA NA 
+0

Didzis, teşekkürler, bu harika çalışıyor. DizeleriAsFactors'ın ikinci geçiş dönüşümünü, karakter vektörlerini faktör olarak aldığını unutmuştum. Teşekkürler ve bu soruyu unutmak için üzgünüm. – user2690051

İlgili konular