2016-03-01 2 views
3

Часто я собираюсь объединить два файла данных вместе, имеющих одно и то же имя. Есть ли способ сделать это в шаге соединения, чтобы я не столкнулся с столбцами .x и .y? Итак, имена могут быть «original_mpg» и «new_mpg»?Избегание и переименование столбцов .x и .y при слиянии или объединении в r

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 issue с dplyr. Вы должны либо до rename до или после соединения, либо использовать merge из базы R, которая принимает аргумент suffixes.

+0

Ничего, я не знал о' суффиксах'. Просто быть nit-picky: OP на самом деле хочет «префиксы», хотя ... – Stibu

+0

Хорошо, спасибо вам обоим. Я не понимал суффиксов/префиксов или что на этот предмет активно смотрели. Я просто надеялся, что мне не нужно будет переименовывать ПОСЛЕДОВАТЕЛЬНОСТИ, поскольку иногда это может сбивать с толку, когда это происходит со многими столбцами или что вы забываете, что столбец изменился. И я не всегда хочу делать это PRIOR, так как иногда я не хочу менять это имя в dataframe. Благодарю вас обоих. – 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 
Смежные вопросы