56

yyyy/mm/dd 形式の日付の 2 つの列を持つデータ フレームがあります。データ フレーム内の観測ごとに、これら 2 つの日付の間の日数を計算しようとしています (そして、この日数で新しい変数を作成します)。

これまでのところ、ここで与えられた答えを使用してみました:

R で 2 つの日付間の平日の日数を計算する

ただし、コードを編集して、曜日数だけでなく合計日数を計算するようにします。これは、次のようなエラーが発生しました。

Error in del/by : non-numeric argument to binary operator
In addition: Warning message:
In Ops.factor(to, from) : - not meaningful for factors

私もこのコードを使用しようとしました:

finish <- as.Date(survey$date, format="%yyyy/%mm/%dd")
start <- as.Date(survey$tx_start, format="%yyyy/%mm/%dd")
date_diff<-as.data.frame(finish-start)

「cbind」または同等のものを使用して、データフレーム「日」をデータを含むデータフレーム「調査」に結合する計画を立てています。

これによりエラーは発生しませんが、「終了」オブジェクトと「開始」オブジェクト内の観測はすべて「NA_real_」であるため、date_diff データ フレームにはすべての観測が NA としてリストされています。

誰かが私を正しい方向に向けることができれば、それは素晴らしいことです! 私が見つけた他のすべての質問は、変数内の日付を扱っているのではなく、個々の日付として扱っているようで、これらの手法を変数に適用してもうまくいきませんでした。

4

5 に答える 5

70

データを表示しないと (の出力を使用しdput(head(survey))て表示できます)、これは暗いショットです。

survey <- data.frame(date=c("2012/07/26","2012/07/25"),tx_start=c("2012/01/01","2012/01/01"))

survey$date_diff <- as.Date(as.character(survey$date), format="%Y/%m/%d")-
                  as.Date(as.character(survey$tx_start), format="%Y/%m/%d")
survey
       date   tx_start date_diff
1 2012/07/26 2012/01/01  207 days
2 2012/07/25 2012/01/01  206 days
于 2012-07-26T09:40:17.373 に答える
59

difftime次のように関数を使用して、データ フレーム内の列の日付の違いを見つけることができます。

df$diff_in_days<- difftime(df$datevar1 ,df$datevar2 , units = c("days"))
于 2015-04-06T19:32:08.497 に答える
2

as.Date 形式を正しく使用する必要があります。

例えば。

x = '2012/07/25'
xd = as.Date(x,'%Y/%m/%d')
xd    # Prints "2012-07-25"

R の日付形式は *nix のものと似ています。

typeof(xd) を実行すると、それが double として表示されます。1970年以来の日々。

于 2012-07-26T09:40:37.610 に答える