R-文字列に特定の日付範囲内の日付が含まれているかどうかを確認します

ashetty

Rスクリプトには次の要件があります(Spotfireで式関数を作成するため)。

dateString <- "04/30/2015 03/21/2015 06/28/2015 12/19/2015"
startDate <- "04/01/2015"
endDate <- "07/01/2015"

注:dateStringには、任意の数の日付を含めることができます。

dateStringのすべての日付がstartDateとendDateの間にある場合は、「Yes」/ TRUEを返す必要があります。それ以外の場合は、「No」/ FALSEを返します。

akrun

'Date'クラスに変換した後between、どちらからでも便利な関数を使用できますdplyr/data.table'dateString'は単一の文字列であり、を使用して、strsplitまたはを使用するだけで、空白部分で分割できscanます。

library(lubridate)
library(data.table)
between(mdy(scan(text=dateString, what='', quiet=TRUE)), 
              mdy(startDate), mdy(endDate))

上記の1行は、理解しやすいようにさまざまなステップに分割できます。

#split the string to substring at whitespace.
v1 <- scan(text=dateString, what='', quiet=TRUE)
#convert to Date class
v2 <- mdy(v1)
#use between to get a logical index of the dates 
#that are between 'startDate' and 'endDate'
res <- between(v2, mdy(startDate), mdy(endDate))
res 
#[1]  TRUE FALSE  TRUE FALSE

完全を期すために、「TRUE / FALSE」の代わりに「Yes / No」の値が必要な場合は、を使用できますifelseそのifelse部分は理解しやすいでしょう。要素が「TRUE」の場合は「Yes」に置き換えられ、そうでない場合は「No」に置き換えられます。

 ifelse(res, 'Yes', 'No')
 #[1] "Yes" "No"  "Yes" "No" 

または、「res」の値を置き換えるための数値インデックス。

 c('No', 'Yes')[res+1L]
 #[1] "Yes" "No"  "Yes" "No" 

上記の手順は少し混乱するかもしれません。しかし、わかりにくいものを見つけたときはいつでも、コードを可能な限り小さいコードに分割します。ここで、私は探します

 res+1L
 #[1] 2 1 2 1

論理インデックスを追加/乗算すると、論理インデックスが2進整数(0/1)に強制されます。ここでは1L、整数1を追加しました。1に強制変換されたTRUE値は2を取得するために1Lで追加され、0に強制変換されたFALSEは1とで追加され0+1 = 1ます。

論理インデックスは数値インデックスに変換されるため、これを使用して文字列のベクトルを置き換えますc('No', 'Yes')文字列の最初の位置は「いいえ」であり、2番目の位置は「はい」であることに注意してください。数値インデックスの長さ、つまり「4」とそのインデックスで指定された位置インデックスに基づいて、インデックスを「はい/いいえ」に置き換えます。


外部パッケージを使用せずにこれを行うこともできます。

 v2 <- as.Date(v1, '%m/%d/%Y')
 v2 >= as.Date(startDate, '%m/%d/%Y') & v2 <= as.Date(endDate, '%m/%d/%Y')
 #[1]  TRUE FALSE  TRUE FALSE

私たちは「たstartDate」と「endDateに」を検討する必要がない場合は、交換する>=/<=>/<

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

文字列がRの別の文字列に含まれているかどうかを確認します

分類Dev

日付がRの間隔内にあるかどうかを確認します

分類Dev

Rを使用して2つの日付範囲が重複しているかどうかを判断しようとしています

分類Dev

C#rで文字列に特定の順序で文字が含まれているかどうかを確認します

分類Dev

R-文字列に特定のパターンのみが含まれているかどうかを確認します

分類Dev

Rを使用して日付が複数の日付範囲で発生するかどうかをテストします

分類Dev

2つのベクトルにRに同じ(順序付けられていない)要素が含まれているかどうかを確認します

分類Dev

r Sys.time()が1日の特定の時間間隔内にあるかどうかを確認します

分類Dev

文字列に数字のみまたは文字のみ(R)が含まれているかどうかを確認します

分類Dev

リストにRの特定の要素が含まれているかどうかを確認する方法

分類Dev

R greplは、文字列にすべての単語が含まれているかどうかを確認します

分類Dev

日付がRの間隔のリスト内にあるかどうかを確認する方法は?

分類Dev

Rの日付範囲に基づいて列を作成する

分類Dev

文字列にRの部分文字列が含まれているかどうかを確認するifelseステートメント

分類Dev

(R)-部分文字列がより大きな文字列に含まれているかどうかを確認し、値を変更します

分類Dev

Java:現在の日付が特定の日の範囲内にあるかどうかを確認します

分類Dev

列にRの同一要素のみが含まれているかどうかを確認するにはどうすればよいですか?

分類Dev

文字列にスペース以外の '\ r' \ t '' \ n '...が含まれているかどうかを確認する方法

分類Dev

現在の日付文字列が他の2つの日付の範囲内または範囲外であるかどうかを確認します

分類Dev

jQuery:日付が複数の日付範囲内にあるかどうかを確認します

分類Dev

日付がSeleniumWeb Driver(Java)の日付範囲内にあるかどうかを確認します

分類Dev

R:データフレームの値が他のデータフレームの範囲内にあるかどうかを確認します

分類Dev

Rの文字として指定された日付列を減算するにはどうすればよいですか?

分類Dev

文字列にベクトルのすべての要素が含まれているかどうかを確認していますか?(R、データフレーム、dplyr)

分類Dev

SQL Serverを使用して、日付が日付範囲の間にあるかどうかを確認します

分類Dev

式テストを作成して、Rの `as.formula( 'X〜1')`に切片が含まれているかどうかを確認しますか?

分類Dev

Rですべての日付を同じ形式に変更するにはどうすればよいですか(列にさまざまな文字形式がたくさんある場合)?

分類Dev

文字が特定のグループに存在するかどうかを確認し、Rに新しい列を作成します

分類Dev

Rに行を挿入して、日付の範囲を別の列で拡張します

Related 関連記事

  1. 1

    文字列がRの別の文字列に含まれているかどうかを確認します

  2. 2

    日付がRの間隔内にあるかどうかを確認します

  3. 3

    Rを使用して2つの日付範囲が重複しているかどうかを判断しようとしています

  4. 4

    C#rで文字列に特定の順序で文字が含まれているかどうかを確認します

  5. 5

    R-文字列に特定のパターンのみが含まれているかどうかを確認します

  6. 6

    Rを使用して日付が複数の日付範囲で発生するかどうかをテストします

  7. 7

    2つのベクトルにRに同じ(順序付けられていない)要素が含まれているかどうかを確認します

  8. 8

    r Sys.time()が1日の特定の時間間隔内にあるかどうかを確認します

  9. 9

    文字列に数字のみまたは文字のみ(R)が含まれているかどうかを確認します

  10. 10

    リストにRの特定の要素が含まれているかどうかを確認する方法

  11. 11

    R greplは、文字列にすべての単語が含まれているかどうかを確認します

  12. 12

    日付がRの間隔のリスト内にあるかどうかを確認する方法は?

  13. 13

    Rの日付範囲に基づいて列を作成する

  14. 14

    文字列にRの部分文字列が含まれているかどうかを確認するifelseステートメント

  15. 15

    (R)-部分文字列がより大きな文字列に含まれているかどうかを確認し、値を変更します

  16. 16

    Java:現在の日付が特定の日の範囲内にあるかどうかを確認します

  17. 17

    列にRの同一要素のみが含まれているかどうかを確認するにはどうすればよいですか?

  18. 18

    文字列にスペース以外の '\ r' \ t '' \ n '...が含まれているかどうかを確認する方法

  19. 19

    現在の日付文字列が他の2つの日付の範囲内または範囲外であるかどうかを確認します

  20. 20

    jQuery:日付が複数の日付範囲内にあるかどうかを確認します

  21. 21

    日付がSeleniumWeb Driver(Java)の日付範囲内にあるかどうかを確認します

  22. 22

    R:データフレームの値が他のデータフレームの範囲内にあるかどうかを確認します

  23. 23

    Rの文字として指定された日付列を減算するにはどうすればよいですか?

  24. 24

    文字列にベクトルのすべての要素が含まれているかどうかを確認していますか?(R、データフレーム、dplyr)

  25. 25

    SQL Serverを使用して、日付が日付範囲の間にあるかどうかを確認します

  26. 26

    式テストを作成して、Rの `as.formula( 'X〜1')`に切片が含まれているかどうかを確認しますか?

  27. 27

    Rですべての日付を同じ形式に変更するにはどうすればよいですか(列にさまざまな文字形式がたくさんある場合)?

  28. 28

    文字が特定のグループに存在するかどうかを確認し、Rに新しい列を作成します

  29. 29

    Rに行を挿入して、日付の範囲を別の列で拡張します

ホットタグ

アーカイブ