2017-03-04 23 views
-1

Rで45,000を超える変数を持つデータセットを使用しています。タイトル列から新しい列を作成しようとしています。ここでタイトル欄の2つの例は次のとおりです。文字列変数から数値形式を抽出する

DIRECTIVE **2001/110/CE** DU CONSEIL DU 20 D<U+00C9>CEMBRE 2001 RELATIVE AU MIEL 

Directive **2010/33/UE** de la Commission du 21<U+00A0>mai 2010 rectifiant la version espagnole de la directive<U+00A0>2001/112/CE du Conseil relative aux jus de fruits et <U+00E0> certains produits similaires destin<U+00E9>s <U+00E0> l'alimentation humaine 

私は太字であるデータから新しい列を作成したいが、Rが読み込まれ、データをソートするために取得する方法がわかりません。

+0

「R Studioにデータを読み込んで並べ替える方法がわからない」とはどういう意味ですか?このデータはファイルですか?ファイルをRに読み込む方法がわからないのですか?あなたはどれくらい知っていますか?あなたはどれくらいの距離を持っていますか?データは45,000 *行*または45,000 *列*ですか? – Spacedman

+0

これは、Excelファイルのデータです。これまでのところ、Excelファイルを正しくアップロードしました。 – Reilly

+0

このファイルには45,000行があり、タイトル列からパターンを検出しようとしています。文字列変数では、パターンを抽出する必要があります:2001/84/CEと私は理解していないパターンを検出するRを取得する方法です。私はこのコードを試しました:str_detect(string、pattern、ignore.case = TRUE、data $ Title、 "([0-9] {4})[/。]([0-9] {2})[/。私は次のエラーメッセージが表示されます:str_detect(...)のエラー: 未使用の引数(ignore.case = TRUE、データ$タイトル、 "([0-9] {4})) [/.]([0-9]{2})[/.]([ce]) ") – Reilly

答えて

0

いくつかの方法があります。よりスケーラブルな方法は、おそらく正規表現を使用することです。

私は正規表現を作成しようとしていましたが、私は個人的にそれほど良くはありませんので、いくつかの欠陥があります。

regmatches(string, regexpr("\\d{4}\\/\\d{3}/[A-Za-z]{2}", string)) 

は、文字列1のために働くが、それを改善することができ、おそらく他の文字列2.間違った結果を与えるだろう。

他の方法は、タイトル欄にパターンを見つけることです。最初の単語は、常にdirectiveの場合:

trimws(substr(string,10,21)) 

より一貫性のある結果だろう。 trimws()を使用しているので、結果の列から空白を削除するだけです。

+0

ありがとうございます。私は現在ストリングパッケージを見ていて、それが正しい軌道に乗っているように感じていますが、それでもまだ問題があります。残念なことに、指示文は必ずしも最初の単語ではないので、Rに####/##/xxの数字形式を検出させようとしています – Reilly

関連する問題