2016-07-07 7 views
0

私は非常に基本的な質問をしていますが、私はRには新しいので、助けていただければ幸いです。1つの列を別の列に切り替える

私は、行が数値コード(たとえば)として読み取られる1つのデータセット内に(他の列の中で)列を持っています。

別のデータセットでは、私は2つの列を持ち、1つは数値コード(上記と同じ)で、その隣の列は名前です。

最初のデータセットの数値コードを、2番目のデータセットを参照として使用する名前に変更する方法はありますか?あなたの助け

+0

あなたは 'merge'(ベースR)または' left_join'(パッケージで 'dplyr')のいずれかを使用します。 – r2evans

+0

私は "left_join"を見てきましたが、列が別のデータセットにある場合は実行できないと思います。それが可能であれば、私はそれをどうやって行うのか分かりません。 – user6561698

+0

私の答えはあなたの質問を解決しましたか?その場合は、回答の左側にあるチェックマークをチェックして回答を「受け入れる」ことが慣例です。 – r2evans

答えて

0

ため

多くのおかげでいくつかのサンプルデータ:merge

set.seed(42)  # because I use `sample`, o/w unnecessary 
df1 <- data.frame(n = sample(5, size = 10, replace = TRUE)) 
str(df1) 
# 'data.frame': 10 obs. of 1 variable: 
# $ n: int 5 5 2 5 4 3 4 1 4 4 

df2 <- data.frame(n = 1:5, txt = LETTERS[5:9], stringsAsFactors = FALSE) 
str(df2) 
# 'data.frame': 5 obs. of 2 variables: 
# $ n : int 1 2 3 4 5 
# $ txt: chr "E" "F" "G" "H" ... 

ベースRの使用:df1の順序は保持されないことを

merge(df1, df2, by = "n") 
# n txt 
# 1 1 E 
# 2 2 F 
# 3 3 G 
# 4 4 H 
# 5 4 H 
# 6 4 H 
# 7 4 H 
# 8 5 I 
# 9 5 I 
# 10 5 I 

注意してください。 merge(..., sort = FALSE)を使用できますが、注文は「指定されていません」(?merge)です。 dplyr::left_joinを使用して

library(dplyr) 
df1 %>% 
    left_join(df2, by = "n") 
# n txt 
# 1 5 I 
# 2 5 I 
# 3 2 F 
# 4 5 I 
# 5 4 H 
# 6 3 G 
# 7 4 H 
# 8 1 E 
# 9 4 H 
# 10 4 H 

を(順序は保持されます。)

関連する問題