Изменить имена столбцов выбранных столбцов - PullRequest
0 голосов
/ 30 мая 2018

Я хотел бы изменить имена столбцов с первой строкой данных.

Это решение в моем предыдущем посте работает для этой части.

OTH, внутрифункции setNames Я хотел бы добавить еще один уровень для изменения имен столбцов только для выбранных столбцов.

Вот проблема

df <- data.frame(replicate(10,sample(100,2,rep=TRUE)))

  X1 X2 X3 X4 X5 X6 X7 X8 X9 X10
1 76 44 89 13  8 31 12 21 50  36
2 78 27 81 75 61 84  2 65 43  51

library(dplyr)
df1 <- df %>%
  select(X1:X5)%>%
  setNames(as.character(.[1,]))

, которая дает

> print(df1)
  76 44 89 13  8
1 76 44 89 13  8
2 78 27 81 75 61

Хорошо, достаточно справедливо!но я хочу сохранить имена столбцов, скажем, X1,X2 и X3 и изменить только с X4 на максимальное количество столбцов

Поэтому я пытаюсь

df1 <- df %>%
  select(X1:X5)%>%
  setNames(as.character(.[1,X4:max(ncol(.))]))

Ошибка в[.data.frame (., 1, X4: max (ncol (.))): Объект 'X4' не найден

Хорошо, возможно, мне нужно указать местоположение столбца по номеру

df1 <- df %>%
  select(X1:X5)%>%
  setNames(as.character(.[1,4:max(ncol(.))]))

> print(df1)
  13  8 NA NA NA
1 76 44 89 13  8
2 78 27 81 75 61

Как мы видим здесь, в именах произошел сдвиг.Имена начинаются с первого столбца, даже если я указал местоположение столбца с помощью 4:max(ncol(.))

Почему это происходит?Любая помощь будет оценена!

Ожидаемый результат.(Я также хотел бы удалить первую строку после этой операции setName)

  X1 X2 X3 13  8
1 78 27 81 75 61

1 Ответ

0 голосов
/ 30 мая 2018

Это бы сработало:

require(tidyverse)

#Using your dataset
df <- data.frame(replicate(10,sample(100,2,rep=TRUE)))

df %>% 
  set_names(c(names(df)[1:3], as.character(.[1,])[4:10])) %>% 
  rownames_to_column("index") %>% 
  filter(index != 1 ) %>% 
  select(-index)

  X1 X2 X3 16 56 51 11 21 61 37
1 43 15 75 38 70 20 63 70 53 79
...