Поместите первую строку в качестве имен столбцов моего dataframe с dplyr в R - PullRequest
0 голосов
/ 07 октября 2018

Это мой фрейм данных:

x<-data.frame(A = c(letters[1:10]), M1 = c(11:20), M2 = c(31:40), M3 = c(41:50))

colnames(x)<-NULL

Я хочу транспонировать (t(x)) и рассматривать первый столбец x как имена нового фрейма данных t(x).

Также мне нужно, чтобы они (имена t(x)) были идентифицированы как слова / буквы (как правильный символ?)

Возможно ли это сделать с помощью пакета dplyr?

Любая помощь?

Ответы [ 3 ]

0 голосов
/ 07 октября 2018

Попробуйте это:

library(dplyr)
library(tidyr)

x <- data.frame(
  A = c(letters[1:10]),
  M1 = c(11:20),
  M2 = c(31:40),
  M3 = c(41:50))

x %>% 
  gather(key = key, value = value, 2:ncol(x)) %>% 
  spread(key = names(x)[1], value = "value")
  key  a  b  c  d  e  f  g  h  i  j
1  M1 11 12 13 14 15 16 17 18 19 20
2  M2 31 32 33 34 35 36 37 38 39 40
3  M3 41 42 43 44 45 46 47 48 49 50
0 голосов
/ 07 октября 2018

Использование rownames_to_column() из пакета tibble

library(magrittr)
library(tibble)

x %>%
  t() %>%
  as.data.frame(stringsAsFactors = FALSE) %>%
  rownames_to_column() %>%
  `colnames<-`(.[1,]) %>%
  .[-1,] %>%
  `rownames<-`(NULL)
#>    A  a  b  c  d  e  f  g  h  i  j
#> 1 M1 11 12 13 14 15 16 17 18 19 20
#> 2 M2 31 32 33 34 35 36 37 38 39 40
#> 3 M3 41 42 43 44 45 46 47 48 49 50

x %>% 
  `row.names<-`(.[, 1]) %>% 
  t() %>%
  as.data.frame(stringsAsFactors = FALSE) %>% 
  .[-1,] 
#>     a  b  c  d  e  f  g  h  i  j
#> M1 11 12 13 14 15 16 17 18 19 20
#> M2 31 32 33 34 35 36 37 38 39 40
#> M3 41 42 43 44 45 46 47 48 49 50

Создано в 2018-10-06 пакетом prex (v0.2.1.9000)

0 голосов
/ 07 октября 2018

Вы можете легко сделать это в базе R. Просто укажите в первом столбце x имена строк, затем удалите первый столбец и транспонируйте.

row.names(x) = x[,1]
x = t(x[,-1])
x
    a  b  c  d  e  f  g  h  i  j
M1 11 12 13 14 15 16 17 18 19 20
M2 31 32 33 34 35 36 37 38 39 40
M3 41 42 43 44 45 46 47 48 49 50
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...