私のデータフレームの2つの列を '良い'日付&タイムクラスに変換しようとしています。それと。私は様々なクラス(timeDate、Date、timeSeries、POSIXct、POSIXlt)を試しましたが、成功しませんでした。たぶん私はただのことを見落としているだけで、私は多くのアプローチを試してきたので、何がもう何を知っているのか分かりません。あなたの何人かが私が間違っているところに光を当ててくれることを願っています。最高(最新)と最低(最も早い)日付を見つける方法
ゴール: 2つの日付の差を最も早い日付と最後の日付を使用して計算したいと思います。私はhead()とtail()を使って作業していますが、これらの値はデータの中で最も早く最新の日付である必要はないので、別の方法が必要です。 (日付の日付にのみデータをソートするため、データの並べ替えを行うことができません。)
第2の目標:日付を毎日の形式-2010)、週末、月次、年次の各レベル(すなわち、「49 -2010」、「12月-10」、および「2010年」)に変更されます。これは、フォーマット設定(「%d-%m-%y」など)で行うことができます。 data.frameをタイムクラスに変換し、正しい形式(8-12-2010 - > format( "%B-%y") - > "december-10")でタイムクラスを変換することでこれを行うことができますそのタイムクラスを月ごとのレベルを持つ要素に変換しますか?
両方の目標については、何らかの方法で日付フレームをタイムクラスに変換する必要があります。これが私がいくつかの問題に遭遇した場所です。
私のデータフレームは、次のようになります。
> tradesList[c(1,10,11,20),14:15] -> tmpTimes4
> tmpTimes4
EntryTime ExitTime
1 01-03-07 10-04-07
10 29-10-07 02-11-07
11 13-04-07 14-05-07
20 18-12-07 20-02-08
ここで私が試した内容の要約です:
> class(tmpTimes4)
[1] "data.frame"
> as.Date(head(tmpTimes4$EntryTimes, n=1), format="%d-%m-%y")
Error in as.Date.default(head(tmpTimes4$EntryTimes, n = 1), format = "%d-%m-%y") :
do not know how to convert 'head(tmpTimes4$EntryTimes, n = 1)' to class "Date"
> as.timeDate(tmpTimes4, format="%d-%m-%y")
Error in as.timeDate(tmpTimes4, format = "%d-%m-%y") :
unused argument(s) (format = "%d-%m-%y")
> timeSeries(tmpTimes4, format="%d-%m-%y")
Error in midnightStandard2(charvec, format) :
'charvec' has non-NA entries of different number of characters
> tmpEntryTimes4 <- timeSeries(tmpTimes4$EntryTime, format="%d-%m-%y")
> tmpExitTimes4 <- timeSeries(tmpTimes4$ExitTime, format="%d-%m-%y")
> tmpTimes5 <- cbind(tmpEntryTimes4,tmpExitTimes4)
> colnames(tmpTimes5) <- c("Entry","Exit")
> tmpTimes5
Entry Exit
[1,] 01-03-07 10-04-07
[2,] 29-10-07 02-11-07
[3,] 13-04-07 14-05-07
[4,] 18-12-07 20-02-08
> class(tmpTimes5)
[1] "timeSeries"
attr(,"package")
[1] "timeSeries"
> as.timeDate(tmpTimes5, format="%d-%m-%y")
Error in as.timeDate(tmpTimes5, format = "%d-%m-%y") :
unused argument(s) (format = "%d-%m-%y")
> as.Date(tmpTimes5, format="%d-%m-%y")
Error in as.Date.default(tmpTimes5, format = "%d-%m-%y") :
do not know how to convert 'tmpTimes5' to class "Date"
> format.POSIXlt(tmpTimes5, format="%d-%m-%y", usetz=FALSE)
Error in format.POSIXlt(tmpTimes5, format = "%d-%m-%y", usetz = FALSE) :
wrong class
> as.POSIXlt(tmpTimes5, format="%d-%m-%y", usetz=FALSE)
Error in as.POSIXlt.default(tmpTimes5, format = "%d-%m-%y", usetz = FALSE) :
do not know how to convert 'tmpTimes5' to class "POSIXlt"
> as.POSIXct(tmpTimes5, format="%d-%m-%y", usetz=FALSE)
Error in as.POSIXlt.default(x, tz, ...) :
do not know how to convert 'x' to class "POSIXlt"
TimeDateを指定パッケージはへの変換、しかし、「範囲」の機能を持っていますDateクラスは個々のインスタンスで動作しますが、何らかの理由でデータフレームでは機能しません:
この時点で私はほとんどそれが不可能だと思うので、どんな考えも高く評価されるでしょう!いくつかのダミーデータと
よろしく、
あなたが使用することができ、 'dput(tmpTimes4)'あなたのコード内の正確なデータセットの使用を提供します。 – Marek
@Marek:応答してくれてありがとう!私はDputについて知らなかったので、チップのおかげで。 :) – Jura25