私が持っている2つのデータフレームをマージしようとしています。もう1つは1から6までの数字の長いリスト(A)で、もう1つは1から6までの数字と各数字の名前(B)のベクトルです。Aの番号のリストにBの対応する番号の名前が含まれるように、BをAにマージするにはどうすればよいですか?
よろしく、Hlynur T
私が持っている2つのデータフレームをマージしようとしています。もう1つは1から6までの数字の長いリスト(A)で、もう1つは1から6までの数字と各数字の名前(B)のベクトルです。Aの番号のリストにBの対応する番号の名前が含まれるように、BをAにマージするにはどうすればよいですか?
よろしく、Hlynur T
これがあなたの状況を再現する場合、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")
(そして、これは過去に何度も質問され、回答されてきました。)
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()を使用すると状況が少し変わりますが、この一般的な構造は、詳細に関係なく、いくつかの調整で機能するはずです。