首页 > 解决方案 > 如何使用 dplyr 管道在指定行之后重命名数据框中的所有列

问题描述

我有一个数据框,df

df <- structure(list(V1 = c("H1", " 0.9", 
"4.1", "4.0"), V2 = c("H2", " 2.174", 
"4.1", "4.1"), V3 = c("H3", " 2.592", 
"3.8", "4.1"), V4 = c("H4", " 2.236", 
"3.8", "4.087463")), row.names = c(NA, -4L), class = "data.frame")

> df
    V1     V2     V3     V4
1   H1     H2     H3     H4
2  0.9  2.174  2.592  2.236
3  4.1    4.1    3.8    3.8
4  4.0    4.1    4.1    4.0

我想在第一行之后重命名列,但使用 dplyr 管道。

期望的结果如下所示:

    H1     H2     H3     H4
2  0.9  2.174  2.592  2.236
3  4.1    4.1    3.8    3.8
4  4.0    4.1    4.1    4.0

我已经尝试过了,但它不起作用:

df_new <- df %>%
    rename_all(.,df[1,])

有人可以建议一种使用 dplyr 的整洁方法吗?

标签: rdplyr

解决方案


我们可以row_to_names使用janitor

library(janitor)
library(dplyr)
df %>%
    row_to_names(row_number = 1) %>%
    type.convert(as.is = TRUE) %>%
    as_tibble
# A tibble: 3 x 4
#     H1    H2    H3    H4
#  <dbl> <dbl> <dbl> <dbl>
#1   0.9  2.17  2.59  2.24
#2   4.1  4.1   3.8   3.8 
#3   4    4.1   4.1   4.09

推荐阅读