2013-06-28 3 views
2

у меня есть два кадра данных: Один (dataframe A), как выглядит следующим образом:Заменить «имена» столбцы кадра данных с различными (новыми) именами в другом файл в R

S.No A1  A2 A3 A4  A6 
    1  0  0  0 0  0 
    2  2  4  7 7  9 
    3  6  7  9 10  0 

и так далее ,

Другой файл (dataframe B), как выглядит следующим образом:

S.No old_names  new_names 
    1  A1    qq 
    2  A2    ww 
    3  A3    gg 
    4  A4    zz 
    5  A6    mm 

Названия А не должны быть в той же последовательности, как и в B $ old_names.

Мой новый файл должен выглядеть следующим образом:

S.No qq  ww gg zz  mm 
    1  0  0  0 0  0 
    2  2  4  7 7  9 
    3  6  7  9 10  0 

есть ли более простой способ сделать это в R без использования для цикла и сравнения обоих файлов?

Любая помощь была бы принята с благодарностью. Оба файла слишком большие.

+1

'names (dataframe1) <- dataframe2 $ new_names'? – Hugh

+0

@Hugh Спасибо. Проблема в том, что имена dataframe1 не обязательно должны быть в той же последовательности, что и dataframe2. В этом случае это не удастся. –

ответ

4
n <- names(df1)[-1] # get rid of S.No 

names(df1) <- c("S.No", as.character(df2$new_names)[match(n, df2$old_names)])