私は正規表現と戦っていますが、それを理解できません。
last.fm (www.lastfm.com) から抽出した入札データベースがあります。このファイルは、各行の各列が「,」(コンマ) で区切られた .txt ファイルで、1.7 GB を超えており、R への読み取りを台無しにする文字がいくつかあります。主な問題は、他の引用符内の " (引用符) にあります。
説明するために、readLines が適用されたときの .txt ファイルの例を次に示します。
[1] "user,\"Method Man & Redman\",\"Da Rockwilder\",0,2012,2,10,8,0,41"
[2] "user,\"Method Man & Redman\",\"Y.O.U.\",0,2012,2,10,7,56,25"
[3] "user,\"Method Man & Redman\",\"Blackout\",0,2012,2,10,7,51,53"
[4] "user,\"Chuckie\",\"Who Is Ready To Jump (Club Mix)\",0,2012,2,10,7,40,12"
[5] "user,\"Opgezwolle\",\"Volle Kracht\",0,2012,2,10,7,36,31"
[6] "user,\"Opgezwolle\",\"Ut Is Wat Het Is\",0,2012,2,10,7,33,25"
基本的に、これは10列のデータフレームになります:ユーザー名、「アーティスト」、「トラック」、愛された(0/1)、年、月、日、時、分、秒
上記の例は問題なく簡単に読むことができますが、次のようなことが起こると問題が発生します。
[1] "user,\"Fall Out Boy\",\"\"The Take Over, The Breaks Over\"\",0,2010,4,17,7,11,37"
[2] "user,\"Gare du Nord\",\"I Want Love 12\" Remix\",0,2011,6,12,19,32,33"
最初のケースでは、二重引用符が原因で、トラック名のコンマによってこれが 2 つの異なる列になり、10 列ではなく 11 列になります。2 番目のケースでは、12" は文字列を「開いた」ままにし、同様のケースが見つかるまで停止します。これが発生すると、データ フレームのいくつかの行が失われます。
解決策として何が欲しいですか?アーティストの名前とトラックの名前を囲むものを除いて、すべての " (引用符) を削除したいと思います。
出力: 出力には、各行に合計 4 つの " (引用符) があります。"アーティスト" と "トラック名" です。したがって、問題を引き起こす 2 行の出力は次のようになります。
[1] "user,\"Fall Out Boy\",\"The Take Over, The Breaks Over\",0,2010,4,17,7,11,37"
[2] "user,\"Gare du Nord\",\"I Want Love 12 Remix\",0,2011,6,12,19,32,33"
gsub と gstring で Regex を使用しようとしましたが、余分な " マークだけを抽出することはできません。
これが複雑すぎる場合は、最初の 3 つ (アーティスト名を囲む引用符とトラック名を囲む最初の引用符) と最後の 3 つ (トラック名の最後の引用符) を除くすべての " を抽出する何かが、ほとんどの場合に機能する可能性があります。 (残りは手動で行います) ここでは、アーティスト名に引用符が含まれていないと仮定しています。
さらに詳しい説明やデータが必要な場合はお知らせください。