私は以下のように文字列のベクトルを持っています。私は日付を抽出したい。文字列から日付を抽出するR
check_values <- c("deficit based on wage statement 7/14/ to 7/17/2015",
"Deficit Due: $1205.73 -$879.63= $326.10 x 70%=$228.2",
"Deficit Due for 12 wks pd - 7/14/15 thru 10/5/15;",
"Deficit due to wage statement: 4/22/15 thru 5/12/15",
"depos transcript 7/10/15 for 7/8/15 depos",
"difference owed for 4/25/15-5/22/15",
"tpd 4:30:2015 - 5:22:2015",
"Medical TREATMENT DATES: 6/30/2015 - 6/30/2015",
"4/25/15-5/22/15",
"Medical")
check_values <- as.data.table(check_values)
names(check_values) <- "check_memo"
日付を抽出する前に、Date_Flagを作成します。私は、次のコードを使用しているが、それは異なる出力が得られます。このDate_Flagが作成され
check_values$Date_Flag <- ifelse(grepl("([0-9]+)(/|-|:)([0-9]+)(/|-|:)([0-9]+)(/|-|:)", check_values$check_memo), 1, 0)
#[1] FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE TRUE FALSE
#Expected Output: FALSE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE
した後、私は日付(両方の部分)を抽出したいです。誰かが上記の正規の回帰に間違っていることを教えてもらえますか?
おかげ
と同じパターンを使用する正規表現は最後にこれを持っている: '| - |:'、それは以降の主な問題です(/) '/'、 '-'、': 'の順で日付のほんの一部が続きます。それが問題です。また、不要な 'ifelse'ステートメントを使用しているときにも、キャプチャグループを使用しています。 'grepl'はTRUEまたはFALSEを返します。 'ifelse'を使う必要はありません。 – Jota
@Jota - 私のスクリプトに関する問題を指摘してくれてありがとう。あなたは(/ | :)と[/:]の正確な違いを説明できますか?なぜ、1つは働き、他は働かないのですか? ifelseは必要ないと私はあなたに同意します。さらに、[0-9] {1,2}の代わりに[0-9] +を使用できないのはなぜですか? 2番目の数字は桁数を制限しますが、私の目的は両方で達成可能でなければなりません。私が間違っているなら、私を修正してください。 – skumar
質問はあなたの質問の完全な説明のための適切な場所ではありませんが、私はいくつかの検索語を提案します。角括弧は[文字クラス](http://www.regular-expressions.info/charclass.html)で使用され、かっこは[取り込みとグループ化]に使用されます(http://www.regular-expressions.info/ brackets.html)。また、 '?regex'ヘルプページを見て、もっと学ぶための正規表現についてのチュートリアルを探してください。その後も疑問が残っている場合は、新しい質問を投稿することを検討してください。 – Jota