Я импортирую электронную таблицу, в которой у меня есть известный вектор заголовков столбцов. Когда read_excel
импортирует данные, он справедливо жалуется на дублированные столбцы и переименовывает их, чтобы различать guish их. Это отличное поведение. Мой вопрос заключается в том, как я могу выбрать (из дублированных столбцов) первое вхождение этого дублированного столбца, отбросить все остальные дублированные столбцы и затем переименовать столбец обратно к исходному имени. У меня есть рабочий скрипт, но он кажется неуклюжим. Я всегда изо всех сил пытаюсь манипулировать заголовками столбцов программно в конвейере.
library(readxl)
library(dplyr, warn.conflicts = FALSE)
cols_names <- c("Sepal.Length", "Sepal.Length", "Petal.Length", "Petal.Length", "Species")
datasets <- readxl_example("datasets.xlsx")
d <- read_excel(datasets, col_names = cols_names, skip = 1)
#> New names:
#> * Sepal.Length -> Sepal.Length...1
#> * Sepal.Length -> Sepal.Length...2
#> * Petal.Length -> Petal.Length...3
#> * Petal.Length -> Petal.Length...4
d_sub <- d %>%
select(!which(duplicated(cols_names)))
new_col_names <- gsub("\\.\\.\\..*","", colnames(d_sub))
colnames(d_sub) <- new_col_names
d_sub
#> # A tibble: 150 x 3
#> Sepal.Length Petal.Length Species
#> <dbl> <dbl> <chr>
#> 1 5.1 1.4 setosa
#> 2 4.9 1.4 setosa
#> 3 4.7 1.3 setosa
#> 4 4.6 1.5 setosa
#> 5 5 1.4 setosa
#> 6 5.4 1.7 setosa
#> 7 4.6 1.4 setosa
#> 8 5 1.5 setosa
#> 9 4.4 1.4 setosa
#> 10 4.9 1.5 setosa
#> # ... with 140 more rows
Создано в 2020-04-08 пакетом Представить (v0.3.0)
Любая идея, как это сделать в более обтекаемым образом?