-2

RStudio で R を使用する際に特定の問題がありますが、一般的には R だと思います。データの一部を抽出し、それぞれの列の元のデータに基づいて新しい列を埋める必要がある 2 つの列があります。私は過去8時間、自分でそれを理解しようとしてきましたが、行き詰まりました。

1 列のタイトルは「Record」で、例のデータは A12DE48、W8DE769、B97AB99、S29VV02Y、D684SV2229 などです。このデータでは、真ん中の Alpha ユニットが重要なユニットで、AB、AN、BU、DE、IK、LS、SV、EEQ、JFS、および PHT のすべてのリストがあります。ご覧のとおり、それらは真ん中にあり、データセットがモデルを実行するために、これらのアルファベット単位を新しい列「項目タイプ」に抽出したいと考えています。これらはおそらく良い指標です。定義したリストに該当するものだけを抽出して出力する方法はありますか? アルファベットだけに焦点を当てるのではなく、リストで見つかったものだけにするので、ルールをこれらのオプションから抽出するように設定したいので、AB、AN、BU、DE、IK、LS、SV、EEQ、JFS、数字、アルファベット、または特殊文字の場所に関係なく、前後に少なくとも 1 つの値がある場合は PHT

OTHER 列にも同様の状況があります。この列「Item Source」には、A134、B223、C111、C2134、D2、E58、T のようなデータポイントがあります (はい、これは単なる T です) 、しかしひねりは、それらの膨大な数の場合、単一のエントリのように複数のソースが存在し、「C111 D207 A965」が含まれますが、空のものも多数あります。複数のソースを持つものをテキスト「複数のソース」に置き換えながら、ここで列のことを行うにはどうすればよいですか

今回は、まだあまり慣れていない R のみを使用することが許可されているため、特に Java から来ているので、どんな助けにも感謝します

4

1 に答える 1

1

議論のために、このデータセットがあるとしましょう:

d = data.frame(record=c("A12DE48","W8DE769","B97AB99","D684SV2229"),
               source=c("A134", "", "T", "C111 D207 A965"),
               stringsAsFactors=FALSE)

最初の列では、単純に正規表現を使用して、文字列内の最後の文字グループを選択できます。次に例を示します。

d$short = gsub(".*\\d+([A-Z]+)\\d+$", "\\1", d$record)

列を処理するにはsource、文字以外のすべてを単純に削除できます。

d$source2 = gsub("[^A-Z]+","",d$source)

につながる

      record         source short source2
1    A12DE48           A134    DE       A
2    W8DE769                   DE        
3    B97AB99              T    AB       T
4 D684SV2229 C111 D207 A965    SV     CDA

これで、複数のソースをどうするかを決めることができます - それらをすべて保持するか、次のように置き換えます。

d$source2[nchar(d$source2) > 1] = "multiple sources"
d$source2[nchar(d$source2) == 0] = "empty"

最終結果:

      record         source short          source2
1    A12DE48           A134    DE                A
2    W8DE769                   DE            empty
3    B97AB99              T    AB                T
4 D684SV2229 C111 D207 A965    SV multiple sources
于 2015-12-11T04:56:14.853 に答える