dplyr для замены имен столбцов первой строкой и удаления первой строки с помощью функции pipe - PullRequest
0 голосов
/ 03 октября 2018

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

Я пытаюсь завершить это с помощью пакета dplyr.

Str() данных:

'data.frame':   2 obs. of  8 variables:
 $ 1   : Factor w/ 2045 levels " 200039"," 200171",..: 2045 1
 $ 2   : Factor w/ 3 levels " DR"," GR"," OU": 3 2
 $ 1372: Factor w/ 1388 levels "       12","       15",..: 1388 1372
 $ 4   : Factor w/ 51 levels " ATLANTA             ",..: 21 4
 $ NA  : logi  NA NA
 $ 63  : Factor w/ 498 levels " 435"," 436",..: 498 63
 $ 95  : Factor w/ 264 levels " 1114"," 1115",..: 264 95
 $ 118 : Factor w/ 132 levels " Chain1  "," Chain10 ",..: 131 118

Я использую следующий код

x <- df %>%
  setNames(df[1, ])

, который дает мне следующий вывод:

     2045   3      1388                    21 NA  498   264       131
1 IRI_KEY  OU  EST_ACV   Market_Name          NA Open  Clsd  MskdName
2  200039  GR  9.709999  BUFFALO/ROCHESTER    NA  539  1219  Chain87 

Однако я хочу, чтобы имена столбцов были IRI_KEY, OU, EST_ACV и т. Д.

Я пытаюсь завершить это, используя dplyr, так как я удалю первую строку иудалите V5, который является столбцом NA.

Я бы предоставил данные, но данные используют факторы и размер слишком велик для SO.Я предоставляю head() из первых 5 результатов.

       V1  V2        V3                    V4 V5   V6    V7        V8
1 IRI_KEY  OU  EST_ACV   Market_Name          NA Open  Clsd  MskdName
2  200039  GR  9.709999  BUFFALO/ROCHESTER    NA  539  1219  Chain87 
3  200171  GR  27.69099  MILWAUKEE            NA  522  9998  Chain97 
4  200197  GR     11.14  PEORIA/SPRINGFLD.    NA  903  9998  Chain59 
5  200233  GR  7.514999  OKLAHOMA CITY        NA 1122  1150  Chain102

РЕДАКТИРОВАТЬ: Я загрузил некоторые dput() здесь

https://textuploader.com/dn5vb

1 Ответ

0 голосов
/ 03 октября 2018

Вы можете попробовать

library(purrr)
library(dplyr)
names <- sapply(df[1, setdiff(names(df), "V5")], as.character)
df %>% 
  select(-V5) %>% 
  set_names(., nm = names) %>%
  .[-1, ]
#  IRI_KEY OU  EST_ACV       Market_Name Open Clsd MskdName
#2  200039 GR 9.709999 BUFFALO/ROCHESTER  539 1219  Chain87
#3  200171 GR 27.69099         MILWAUKEE  522 9998  Chain97
#4  200197 GR    11.14 PEORIA/SPRINGFLD.  903 9998  Chain59
#5  200233 GR 7.514999    OKLAHOMA CITY  1122 1150 Chain102

Извлечь первую строку кроме столбца V5 и преобразовать в символ.В трубе сначала исключите столбец V5, затем измените имена столбцов и удалите первую строку.

данные

df <- read.table(text = "       V1  V2        V3                    V4 V5   V6    V7        V8
IRI_KEY  OU  EST_ACV   Market_Name          NA Open  Clsd  MskdName
200039  GR  9.709999  BUFFALO/ROCHESTER    NA  539  1219  Chain87 
200171  GR  27.69099  MILWAUKEE            NA  522  9998  Chain97 
200197  GR     11.14  PEORIA/SPRINGFLD.    NA  903  9998  Chain59 
200233  GR  7.514999  'OKLAHOMA CITY'       NA 1122  1150  Chain102", header = TRUE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...