2016-05-20 31 views
8

Bir windows makinesinde data.table 1.9.7 yüklendikten sonra, data.table var A sütunlarından biri Date türünde. Ben fwrite ile CSV dosyasına bir dışa istiyorum amaDönüştürme tarihini R data.table fwrite 1.9.7 olarak ayarlamaktan nasıl kaçınabilirsiniz?

fwrite(A,file="out1.csv") 

Tarihi çalıştırdığınızda kolon idate tamsayı türüne dönüşür. tarih biçiminde tutmam gerek çünkü bu dosya farklı bir uygulamada kullanılmayacak, R değil. Kimlik için dönüştürülen Tarih sütununa nasıl sahip olmaz? İlk girişimim,

kullanmaktı, ancak 100M satırlık data.table içinde yaklaşık 1000 saniye sürüyordu. Bundan kaçınmanın bir yolu var mı?

+4

100M satırınız olduğundan, bazı yinelenen tarihleriniz olduğunu varsayalım, bu yüzden A [, theDate: = as.character (theDate [1L]), = =Date] 'gibi bir şey yapmak daha hızlı olabilir. 'fwrite' oldukça yenidir, bu yüzden tarihlerin bu tedavisinin bir gözetim olduğunu ve bunu iyileştirmek için bir özellik isteğini memnuniyetle karşılayacağını tahmin ediyorum. – Frank

+2

@Frank Güzel fikir. Tarihler yapılacaklar listesi uzun: [# 1664] (https://github.com/Rdatatable/data.table/issues/1664). Fikriniz bir düşünceyi tetikledi ... yazım, her tarihi ayrı ayrı çevirmek yerine dahili olarak bir arama yapabilir. –

cevap

2

Bu şimdi uygulanmaktadır ve hızlıdır. Lütfen data.table v1.9.8 + 'ya güncelleyin. Tarihlerin dateTimeAs="ISO"|"squash"|"epoch"|"write.csv" ile nasıl yazıldığını kontrol edebilirsiniz. fwrite'un güncel versiyonuna bakınız here.

+0

'dateAs' argümanı artık mevcut değil. Çıkış gereksinimlerim yeni 'dateTimeAs' argümanında üç seçenekten biri olmadığından,' write.csv''ye geri dönmek zorunda kalacak. – ddunn801

+0

@ ddunn801 İhtiyaçlarınız nedir? Teşekkür ederim. [Manual page] (https://www.rdocumentation.org/packages/data.table/versions/1.10.4/topics/fwrite) cümleyi içerir. "Eğer bir veya iki özel seçeneği destekleyebilirsek gereklidir." –

+0

Basit bir tarih seçeneği sadece yararlı olacaktır: 2017-02-16 veya benzeri bir şey. Biraz oynadıktan sonra, ilk önce tarihi bir karakter alanına dönüştürebilir ve daha sonra hızlı 'fwrite'den sonra dönüştürebilirim. TLDR: Trickier bir şey için ekstra iki seçenek kaydedin. Cevap için teşekkürler. – ddunn801

İlgili konular