如何有条件地更改某些行的姓氏?

时间:2018-11-20 22:07:00

标签: r dplyr tidyverse purrr

我遇到一个经常使用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开始的第一行的值?

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