通常我會將兩個數據框連接在一起,並且名稱相同。有沒有辦法在連接步驟中做到這一點,以便我最終不會得到.x和.y列?所以名字可能是'original_mpg'和'new_mpg'?合併或加入r時避免並重命名.x和.y列
library(dplyr)
left_join(mtcars, mtcars[,c("mpg",'cyl')], by=c("cyl"))
names(mtcars) #ugh
通常我會將兩個數據框連接在一起,並且名稱相同。有沒有辦法在連接步驟中做到這一點,以便我最終不會得到.x和.y列?所以名字可能是'original_mpg'和'new_mpg'?合併或加入r時避免並重命名.x和.y列
library(dplyr)
left_join(mtcars, mtcars[,c("mpg",'cyl')], by=c("cyl"))
names(mtcars) #ugh
目前,這是一個open issue與dplyr。您需要在加入之前或之後加入rename
,或者使用merge
(來自基礎R),這需要suffixes
參數。
不錯,我不知道有'後綴'。只是爲了挑剔:OP實際上要'前綴',儘管... – Stibu
好的,謝謝你們倆。我沒有意識到後綴/前綴或者這種事情正在被積極地看待。我只是希望我不必重新命名後面的內容,因爲有時在多列出現這種情況時可能會引起混淆,或者您忘記列發生了變化。我並不總是希望這樣做,因爲有時我並不想在數據框中更改該名稱。不過謝謝你。 – runningbirds
@runningbirds我的評論是一個小玩笑,前綴不存在作爲合併的參數。對不起,因爲不清楚! – Stibu
默認後綴,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
預先重命名它們...'名稱(? df)< - paste(「original」,names(df),sep =「_」)' – cory