「RosettaStone」データフレームに基づいて、1つの文字列を新しい文字列にマップする新しい列を追加しますか?

Gen

Rにデータフレームがあります。

置換する文字列を定義するmap / translation / Rosetta Stoneデータフレームを使用して、いくつかの古い文字列を新しい文字列にマップする新しい列を追加/変更しようとしています。

何かが関係dplyr::mutateしていて、ある種の機能が適用されることを考えていましたがgsubすべてをまとめることはできません。

開始データフレーム:

  starting_df <- read.table(header=TRUE, text="
  ID   Genotype
  VIT_123_1    0
  ROM_456_2    0
  VIT_78_1     1
  BELG_910_1   1
")

ロゼッタストーンデータフレーム:

  map_df <- read.table(header=TRUE, text="
  ID   New_ID
  VIT   VCO1
  ROM   VRO1
  BELG  VBE2
")

必要な出力データフレーム:

  >head(updated_df)
    ID           Genotype    New_ID
    VIT_123_1    0           VCO1_123_1
    ROM_456_2    0           VRO1_456_2
    VIT_78_1     1           VCO1_78_1
    BELG_910_1   1           VBE2_910_1
ラミア

パッケージstr_replace_allからご利用いただけstringrます。

まず、map_dfデータフレームを名前付きベクトルに変換します

map_v = as.character(map_df$New_ID)
names(map_v) = map_df$ID

次に、古い値を新しい値に置き換えます。

library(stringr)
res = starting_df
res$New_ID = str_replace_all(starting_df$ID,map_v)

          ID Genotype     New_ID
1  VIT_123_1        0 VCO1_123_1
2  ROM_456_2        0 VRO1_456_2
3   VIT_78_1        1  VCO1_78_1
4 BELG_910_1        1 VBE2_910_1

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ