2016-07-07 66 views
0

我有一個非常基本的問題,但我是新來的R,所以將不勝感激任何幫助。切換一列到另一個

我在一個數據集中有一列(在其他列中),其中的行讀取爲數字代碼(例如)。

在另一個數據集中,我有兩列,一列是數字代碼(與上面相同),旁邊的列是名稱。

在R中有沒有一種方法可以將第一個數據集中的數字代碼重新命名爲使用第二個數據集作爲參考的名稱?

非常感謝您的幫助

+0

您想使用是'merge'(基礎R)或'left_join'(中包'dplyr')。 – r2evans

+0

我看過「left_join」,但我認爲如果列在不同的數據集中,則無法完成。或者如果可能的話,我不知道該怎麼做。 – user6561698

+0

我的答案解決了你的問題嗎?如果是這樣,習慣上通過檢查答案左邊的複選標記來「接受」答案。 – r2evans

回答

0

一些樣本數據:

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使用的merge

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 

注意的df1順序不會保留。我們可以使用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 

(訂單將被保留。)

相關問題