2016-03-01 51 views
3

通常我會將兩個數據框連接在一起,並且名稱相同。有沒有辦法在連接步驟中做到這一點,以便我最終不會得到.x和.y列?所以名字可能是'original_mpg'和'new_mpg'?合併或加入r時避免並重命名.x和.y列

library(dplyr) 
    left_join(mtcars, mtcars[,c("mpg",'cyl')], by=c("cyl")) 
    names(mtcars) #ugh 
+2

預先重命名它們...'名稱(? df)< - paste(「original」,names(df),sep =「_」)' – cory

回答

4

目前,這是一個open issuedplyr。您需要在加入之前或之後加入rename,或者使用merge(來自基礎R),這需要suffixes參數。

+0

不錯,我不知道有'後綴'。只是爲了挑剔:OP實際上要'前綴',儘管... – Stibu

+0

好的,謝謝你們倆。我沒有意識到後綴/前綴或者這種事情正在被積極地看待。我只是希望我不必重新命名後面的內容,因爲有時在多列出現這種情況時可能會引起混淆,或者您忘記列發生了變化。我並不總是希望這樣做,因爲有時我並不想在數據框中更改該名稱。不過謝謝你。 – runningbirds

+0

@runningbirds我的評論是一個小玩笑,前綴不存在作爲合併的參數。對不起,因爲不清楚! – Stibu

1

默認後綴,c(".x", ".y"),可以通過將它們作爲長度爲2的字符向量重寫:

library(dplyr)  
left_join(mtcars, mtcars[,c("mpg","cyl")], 
       by = c("cyl"), 
       suffix = c("_original", "_new")) %>% 
     head() 

輸出

mpg_original cyl disp hp drat wt qsec vs am gear carb mpg_new 
1   21 6 160 110 3.9 2.62 16.46 0 1 4 4 21.0 
2   21 6 160 110 3.9 2.62 16.46 0 1 4 4 21.0 
3   21 6 160 110 3.9 2.62 16.46 0 1 4 4 21.4 
4   21 6 160 110 3.9 2.62 16.46 0 1 4 4 18.1 
5   21 6 160 110 3.9 2.62 16.46 0 1 4 4 19.2 
6   21 6 160 110 3.9 2.62 16.46 0 1 4 4 17.8