2016-11-11 17 views
1

Rのデータフレームに文字列/文字列があります。私はこの "myDat"と呼んでいます。変換データフレームに基づくデータフレーム列の文字値の変更R

私は文字列/文字の2つの列を持つRに別のデータフレームを持っています。私は以下の "conversionDat"と呼んでいます。 1つの列(「名前」)には、「myDat」の列と同様の名前が含まれています。もう一方の列( "Name2")には、 "myDat"列を変換する必要のある名前が含まれています。ここで

は、これら2つのデータフレームのMWEです:

myDat <- data.frame(Name = c("A","D","P","R")) 
conversionDat <- data.frame(Name = c("D","R","A","P"), Name2 = c("S","T","B","Z")) 
myDat$Name <- as.character(myDat$Name) 
conversionDat$Name <- as.character(conversionDat$Name) 
conversionDat$Name2 <- as.character(conversionDat$Name2) 

私は「myDatは」「conversionDat $名」の値に等しいいずれのケースを見つけたいと「conversionDat $ Name2は」に変換します。したがって、上記のMWEで、「conversionDat」データフレームは変更されないままだろうが、「myDat」データフレームはなる:

B2 
S2 
Z2 
T2 

は、これを行うについて行くに痛みのない方法はありますか?どんなアイデアでも大歓迎です!

+1

アン: 'conversionDat $ Name2は[一致(myDat $名、conversionDat $:あなた' data.frame'sを宣言するとき、 'stringsAsFactors = false'を – bouncyball

+3

あなたは' match'を使用することができます設定すると便利かもしれ名前)] ' – Psidom

答えて

1

痛みのない方法は、単に両方をマージし、Name2列に必要な「2」を追加することです。余談

myDat <- data.frame(Name = c("A","D","P","R")) 
conversionDat <- data.frame(Name = c("D","R","A","P"), Name2 = c("S","T","B","Z")) 


myDat <- merge(myDat, conversionDat, by = "Name") 
myDat$Name2 <- paste(myDat$Name2, "2", sep = "") 

> myDat 
    Name Name2 
1 A B2 
2 D S2 
3 P Z2 
4 R T2 
関連する問題