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 ...
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ı. –
@Brandon: Ben de öyle yaptım, ama hala bir bummer bu şekilde yapmak zorundayım. –