Как преобразовать табличные значения в заголовки столбцов - PullRequest
0 голосов
/ 12 октября 2019

Я пытаюсь манипулировать своими данными так, чтобы значения в каждом столбце становились заголовками столбцов, а значения для каждого из этих столбцов - их предыдущим именем столбца.

Моя таблица может быть создана с помощью следующего кода:

library(tidyverse)
df <- tibble("#" = c(1,2,3),
             "1" = c("a","a","b"), 
             "2" = c("b","b","c"), 
             "3" = c("c","c","a"))

Моя текущая таблица выглядит так:

# 1 2 3
1 a b c
2 a b c
3 b c a

И я хочу, чтобы она выглядела так:

# a b c
1 1 2 3
2 1 2 3
3 3 1 2

1 Ответ

0 голосов
/ 12 октября 2019

Можно использовать order, примененный к каждой строке tibble:

## new column names
names(df) <- c("#", sort(unlist(df[1, -1], use.names = FALSE)))

## apply order to each row of df
df[, -1] <- t(apply(df[, -1], 1, order))

df
#> # A tibble: 3 x 4
#>     `#`     a     b     c
#>   <dbl> <int> <int> <int>
#> 1     1     1     2     3
#> 2     2     1     2     3
#> 3     3     3     1     2

Отказ от ответственности : предполагается, что каждая строка содержит перестановку всех доступных переменных. Если это не так (например, дважды буква a в одной строке), возникнет проблема с назначением отдельных значений каждому столбцу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...