2017-12-13 19 views
1

から特定の番号を抽出します。R:私は以下のような列を持っている文字列

C1 
we-23 pcs,qw-4 pcs 
we-30 pcs 
er-21 pcs,we-2 pcs 
tr-23 pcs 
we-0 pcs, re-2 pcs 
we-0 pcs 
NA 

私は数値形式で「我々」と、NASで保存していない文字(0)の量を抽出したいです。 は、私が使用:

C2 <- as.numeric(str_extract_all(str_extract_all(C1, "we-*\\d+"), "\\d+")) 

結果:

C2 
23 
30 
2 
0 
0 
0 
NA 

をしかし、私は、我々-0個よりも異なるようにTR-23個のエントリを取得したいです。だから私はC1で "私たち"を見つけるために別の論理列を使用しています。 これを行うより良い方法はありますか?

+1

'str_extract_all(C1、"(?<= we - )\\ d + ")'と 'str_extract_all(C1、"(?<= tr - )\\ d + ")'を意味しますか? –

+0

Arani、いくつかのフィードバックをお願いします: '私たちの後に数字を抽出する必要がありますか?'と 'tr-'の後の数字を別の列に抽出する必要がありますか? –

+0

いいえ、私は '私たちの後に数字が必要です。可能であれば、別の列に合計してください。基本的に、「我々」マークは特別であり、他は同じ重要性を有する。 'we-0'でも特別な意味を持ち、' ​​we-'が存在しないところから分離する必要があります。私はあなたのソリューションを試し、ここで更新します。 – Arani

答えて

1

あなたは

C2 <- as.numeric(str_extract(C1, "(?<=we-)\\d+")) 

を使用することができregex demoを参照してください。

パターンは詳細:

+1

デモのために余計に感謝、それは素晴らしいです! – Arani

関連する問題