0

私が持っている2つのデータフレームをマージしようとしています。もう1つは1から6までの数字の長いリスト(A)で、もう1つは1から6までの数字と各数字の名前(B)のベクトルです。Aの番号のリストにBの対応する番号の名前が含まれるように、BをAにマージするにはどうすればよいですか?

よろしく、Hlynur T

4

2 に答える 2

2

これがあなたの状況を再現する場合、merge答えは次のとおりです。

 dfB <- data.frame(numb = 1:6, nams = LETTERS[1:6])
 dfA <- data.frame(nums = sample(1:6, 30, repl=TRUE))
 merge(dfA, dfB, by.x="nums", by.y="numb")

(そして、これは過去に何度も質問され、回答されてきました。)

于 2012-12-26T18:32:06.477 に答える
1

match()を使用します。次の2つのデータフレームがあるとします。

A <- data.frame(num=sample(1:6,100,replace=TRUE))
B <- data.frame(num=1:6,myname=letters[1:6])

次に、データフレームAの新しい列「myname」を作成します。

A[,'myname'] <- B[match(A[,'num'],B[,'num']),'myname']

他の人が述べたように、名前の列を作成する代わりにrownames()を使用すると状況が少し変わりますが、この一般的な構造は、詳細に関係なく、いくつかの調整で機能するはずです。

于 2012-12-26T18:23:25.890 に答える