我遇到一个经常使用excel调查数据的问题:前10个左右的列名在数据集中是合适的,其余的x:ncol
需要重命名为数据的第一行的值设置,从x + 1开始。 (直到x为止,这些名称都是正确的,此后该名称变为空,并且我希望将具有的值作为第一行中的名称)。
我一直在手动执行此操作,使用dplyr::select()
逐一写出它们。如何在一个整齐的工作流程中自动执行此操作?我想象使用set_names()
或rename_at()
但无法获取语法。预先谢谢你
mtcars %>%
select(miles_per_gallon = "mpg", everything()) %>% #etc. keep some names
rename_at(vars(3:ncol(.)), funs(mtcars[,1]))
Error: `nm` must be `NULL` or a character vector the same length as `x`
该错误不足为奇,但是为了说明这一点-如何将x:ncol()中的名称替换为从x + 1开始的第一行的值?
答案 0 :(得分:0)
我认为这应该为您做-
x <- 10 # means 1:10 column names are appropriate
names(df)[(x+1):ncol(df)] <- df[1, (x+1):ncol(df)]
df <- df[-1, ] # removing 1st row assuming it's bad data