RODBC

2010-11-18 12 views
2
ile 0xls dosyaları okunurken colnames kullanılmıyor

Başka bir şaşırtıcı sorunum var.RODBC

RODBC ile .xls dosyalarını okumam gerekiyor. Temel olarak, bir kağıda tüm hücrelerin bir matrisine ihtiyacım var ve daha sonra verileri almak için greps ve strsplits vb. Kullanın. Her sayfa farklı düzende birden fazla tablo ve diğer seçeneklerdeki bazı metin alanları içerdiğinden, readLines() gibi işlev gören ancak excel sayfaları için gereken bir şeye ihtiyacım var. RODBC'nin bunu yapmanın en iyi yolu olduğuna inanıyorum. benim kod temel işlevi takip

: I güvenilir ne

.read.info.default <- function(file,sheet){ 
    fc <- odbcConnectExcel(file) # file connection 
    tryCatch({ 
     x <- sqlFetch(fc, 
        sqtable=sheet, 
        as.is=TRUE, 
        colnames=FALSE, 
        rownames=FALSE 
      ) 
     }, 
     error = function(e) {stop(e)}, 
     finally=close(fc) 
    ) 

    return(x) 
} 

Ancak, her zaman geri veri çerçevesinin değişken isimleri olarak belirtilen tabakanın ilk satırı alır. Bunu nasıl çözeceğine dair bir ipucu yok. Belgelere göre, colnames=FALSE bunu engellemelidir.

xlsReadWrite paketinden kaçınmak istiyorum. Düzenleme: ve gdata paketi. İstemci, sistemde Perl'e sahip değildir ve yüklemez.


Düzenleme: vazgeçtim ve xlsReadWrite paketinden read.xls() gitti

. İsim problemi dışında RODBC, gerçekten eğik çizgi gibi özel işaretler içeren hücreleri okuyamadı. "Dd/mm/yyyy" biçimindeki bir tarih NA'yı verdi.

sqlFetch, sqlQuery ve sqlGetResults kaynak koduna baktığımda, sorunun sürücülere göre daha fazla olduğunu anladım. Her nasılsa, sayfanın ilk satırı, sıradan bir hücre yerine bazı sütun özelliği olarak görülür. Yani colnames yerine, DB alan adlarına denktirler. Ve bu ayarlayamazsınız ...

+0

Ben de bu sorunu yaşadım. Onunla başa çıkma biçimim, sahte verileri bırakıp sütunları yeniden adlandırmaktan sonra bazı manipülasyon kodları yazmaktı. –

+0

@Brandon: Ben de öyle yaptım, ama hala bir bummer bu şekilde yapmak zorundayım. –

cevap

1

Perl tabanlı çözümü yerine gdata kullanabilir misiniz? Bu da çok taşınabilir ...

+0

Ne yazık ki, R'nin internete bağlanmak zorunda olmadığından emin olmak istediğim müşteriyi hatırlıyor musun? Perl'i sete eklememe izin vermeyecekler ... –

+1

Blöfü çağırarak. Excel de --- --- kimin umurunda. Daha akıllı müşterilere ulaşma zamanı? –

+0

burada söylediklerime dikkat etmeli, ancak akademik bir istatistik danışmanının görevleri hakkında kendim ve üst düzey profesör arasındaki küçük bir anlaşmazlığı sürdürelim. Artı, onları sahip oldukları veritabanını gerçekten kullanmaya ikna etmeyi umuyorum. Şu an excel tabakalarını oradan çekiyorlar, hayal edin. * Facepalm * –