重複の可能性:
文字ベクトルでas.Dateが遅いのはなぜですか?
を使用してデータベースから読み取った大きなdata.frame
(約60 milの観測値)がありますRMySQL
。日付は文字として取り込まれるので(これを変更する方法はないようです)、私はas.Date
物事を日付に変換するために使用します。しかし、これは非常に多くの観察で非常に長い時間がかかります。これを速くするためにできることはありますか?
重複の可能性:
文字ベクトルでas.Dateが遅いのはなぜですか?
を使用してデータベースから読み取った大きなdata.frame
(約60 milの観測値)がありますRMySQL
。日付は文字として取り込まれるので(これを変更する方法はないようです)、私はas.Date
物事を日付に変換するために使用します。しかし、これは非常に多くの観察で非常に長い時間がかかります。これを速くするためにできることはありますか?
Simon Urbanek のfasttimeライブラリは、解析可能な日時のサブセットに対して非常に高速です。
R> now <- Sys.time()
R> now
[1] "2012-10-15 10:07:28.981 CDT"
R> fasttime::fastPOSIXct(format(now))
[1] "2012-10-15 05:07:28.980 CDT"
R> as.Date(fasttime::fastPOSIXct(format(now)))
[1] "2012-10-15"
R>
ただし、ISO 形式のみを解析し、UTC をタイムゾーンとして想定します。
3 年半後に編集: 一部のコメント投稿者は、fasttime パッケージのインストールが難しいと考えているようです。失礼ですが同意できません。これは(もう一度)littlerinstall.r
を使用した単純なラッパーです(また、例として出荷されています):
edd@max:~$ install.r fasttime
trying URL 'https://cran.rstudio.com/src/contrib/fasttime_1.0-1.tar.gz'
Content type 'application/x-gzip' length 2646 bytes
==================================================
downloaded 2646 bytes
* installing *source* package ‘fasttime’ ...
** package ‘fasttime’ successfully unpacked and MD5 sums checked
** libs
ccache gcc -I/usr/share/R/include -DNDEBUG -fpic -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -g -O3 -Wall -pipe -pedantic -std=gnu99 -c tparse.c -o tparse.o
ccache gcc -shared -L/usr/lib/R/lib -Wl,-Bsymbolic-functions -Wl,-z,relro -o fasttime.so tparse.o -L/usr/lib/R/lib -lR
installing to /usr/local/lib/R/site-library/fasttime/libs
** R
** preparing package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded
* DONE (fasttime)
The downloaded source packages are in
‘/tmp/downloaded_packages’
edd@max:~$
ご覧のとおり、パッケージには外部依存関係がなく、1 つのソース ファイルがあり、わずかな問題もなくビルドされます。また、答えが書かれたときではなかったfasttimeがCRANにあることもわかります。これにより、Windows と OS X のバイナリがそのページに存在するようになり、ソースからインストールしなくてもインストールは簡単になります。