如何使用dplyr管道在指定行之后重命名dataframe中的所有列
我有一个数据帧,如何使用dplyr管道在指定行之后重命名dataframe中的所有列,r,dplyr,R,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"
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
我尝试过这个,但不起作用:
df_new <- df %>%
rename_all(.,df[1,])
df_新%
重命名_all(,df[1,])
有人能推荐一种使用dplyr的整洁方法吗?我们可以使用
行到行名称来自门卫
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
图书馆(看门人)
图书馆(dplyr)
df%>%
行到行名称(行编号=1)%>%
type.convert(as.is=TRUE)%>%
不可抵抗
#一个tibble:3x4
#H1H2H3H4
#
#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
未完全管道化,但无额外包装:
library(dplyr)
colnames(df)<-df[1,]
df %>% tail(-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.087463
您可以将管道与此方法冷使用为:df%>%setNames([1,])%>%tail(-1)
@IceCreamToucan,谢谢您的提示,我没有想到这一点!您可能希望将“字符
数字”转换为数字。@Henrik,谢谢,您是对的,这似乎是合理的,而提供的示例确实是字符
是的,H1-H4行在读取数据时可能强制了所有数字。我怀疑在阅读阶段完全可以避免双Heasder的问题…相关的管道前回答:
library(dplyr)
colnames(df)<-df[1,]
df %>% tail(-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.087463
df %>% setNames(.[1,]) %>% tail(-1) %>% mutate(across(everything(),as.numeric))
H1 H2 H3 H4
1 0.9 2.174 2.592 2.236000
2 4.1 4.100 3.800 3.800000
3 4.0 4.100 4.100 4.087463