Переименовать столбцы данных на основе значений в другом кадре данных в R - PullRequest
0 голосов
/ 12 мая 2018

У меня есть один фрейм данных, в котором есть один столбец и две записи.

DF1 =

Name 
M_D
ABC123

У меня есть другой фрейм данных, который имеет два столбца. Мне нужно переименовать вторые столбцы данных с двумя значениями в первом кадре данных.

DF2 =

   PQR  LMN
   111  345
   456  999

Я хочу DF2, как показано ниже

   M_D  ABC123
   111  345
   456  999

Спасибо

Ответы [ 3 ]

0 голосов
/ 12 мая 2018

Исходя из вашего комментария выше, я рекомендую жестко закодировать что-то вроде dplyr::rename().

DF2 <- DF2 %>% 
  dplyr::rename(
    M_D       = PQR,
    ABC123    = LMN
  )

По моему опыту, вы не должны верить, что соавторы дадут вамодна и та же структура набора данных каждый раз.Это вызовет ошибку, если они изменили имена столбцов (это хорошо - вы хотите получать оповещения о проблеме в начале конвейера).Если они изменили порядок столбцов, dplyr::rename() будет обрабатывать его корректно и корректно.

Рассмотрим дополнительные защитное программирование инструменты, такие как checkmate или testit , чтобы убедиться, что характеристики столбца соответствуют вашим ожиданиям ( например, , столбец PQR / M_D является целым числом со значениями от 0 до 5).

0 голосов
/ 12 мая 2018

Это будет работать, если длина DF1 $ Name совпадает с количеством столбцов DF2

colnames(DF2) <- DF1$Name
0 голосов
/ 12 мая 2018

Вы можете получить доступ к значениям имен столбцов для DF2, используя оператор $ или [[ для DF1. Поскольку OP упомянул, что он даже не знает имен столбцов DF1, опция может быть такой:

names(DF2) <- DF1[,1]
DF2
#  M_D ABC123
#1 111    345
#2 456    999

#OR
names(DF2) <- DF1[[1]]

#OR
names(DF2) <- DF1$Name

Примечание: names(DF2) <- DF1[1] не будет работать, поскольку DF1[1] по-прежнему имеет тип data.frame, а names<- ожидает vector.

Данные:

DF2 <- read.table(text = 
"PQR  LMN
111  345
456  999",
header = TRUE, stringsAsFactors = FALSE)

DF1 <- read.table(text = 
"Name 
M_D
ABC123",
header = TRUE, stringsAsFactors = FALSE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...