colsplitを使用してデータフレーム内のベクターを分割しようとしています。 colsplitの引数として正規表現を使用しているということは、柔軟性があると思っていますが、私は問題を抱えています(Rの正規表現を理解していない可能性があります)。ここでR + reshape:colsplit with regex
は問題です:
のベクトルを作成してみましょう...
> library(reshape)
> my_var_1 <- factor(c("x00_aaa_123","x00_bbb_123","x00_ccc_123","x01_aaa_123","x01_bbb_123","x01_ccc_123","x02_aaa_123","x02_bbb_123","x02_ccc_123"))
私は最初のアンダースコア時に2列に分割したいと思います。言い換えれば は、私はそれを行いますCOLSPANの内部右正規表現が、運を見つけようとしています
x whatever
1 x00 aaa_123
2 x00 bbb_123
3 x00 ccc_123
4 x01 aaa_123
5 x01 bbb_123
6 x01 ccc_123
7 x02 aaa_123
8 x02 bbb_123
9 x02 ccc_123
...私の最終的な結果は、このようにしたいです。ここで私が得ることができる最も近い...簡単な区切り文字として分割された正規表現を使用し、それは私に3つの列を与える
> colsplit(my_var_1, split="_", c("x","whatever"))
x whatever NA.
1 x00 aaa 123
2 x00 bbb 123
3 x00 ccc 123
4 x01 aaa 123
5 x01 bbb 123
6 x01 ccc 123
7 x02 aaa 123
8 x02 bbb 123
9 x02 ccc 123
です。私は2番目のアンダースコアを分割しないでください(私の実際のデータでは、2つだけでなく、任意の数のアンダースコアがあります)。
"分割"に使用できる式がありますか?
私はcolsplitの正規表現でグループに一致させることができ、グループの一致は分割の内容になることを期待していましたが、そのようには見えません。
*編集(thanks to @Joshuaulrich)colsplit worksは、新しいreshape2を使用する場合、「意図したとおりに」動作します。
(再構築します)。 "split"は、少なくとも最近のバージョンでは、形の変更の引数です:http://www.inside-r.org/packages/cran/reshape/docs/colsplit – Angelo
私はあなたと私とは異なるバージョンを使用していると思います! – Angelo
@Angelo:ああ、答えは「いいえ」です。 'reshape2 :: colsplit'、または[この回答](http://stackoverflow.com/a/8300246/271616)で提供したソリューションを使用する必要があります。 –