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]
コメントを追加