dplyr将第一行替换为同名,并使用管道功能删除第一行

时间:2018-10-02 21:50:21

标签: r 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

但是我想用OUEST_ACVdplyr等作为列名。

我尝试使用V5完成此操作,因为我将删除第一行并删除NA列的head()

我会提供数据,但数据会使用各种因素,因此对于SO而言,数据太大。我提供了前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()

编辑:我在这里上传了一些{{1}}

https://textuploader.com/dn5vb

1 个答案:

答案 0 :(得分:1)

您可以尝试

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)