Добавление заголовка к столбцам на основе значений строк - PullRequest
0 голосов
/ 27 апреля 2019

У меня есть следующие разные фреймы данных:

df1:

Scribe       Reduced    A    5    2.5    3    10
Reader       Reduced    A    9.2  4      12   10
Optimise     Reduced    A    5    5.8    3    12

df2:

Convert      Reduced    A    14    25  
Configure    Reduced    A    14.7  6.8      
Race         Reduced    A    2     6.3

df3:

Abstract     Reduced    A    8    7.5    9    8     4.5    11
Follower     Reduced    A    5.5  6      14   19    6      13.5

IЯ хотел бы добавить заголовок для каждого из кадров данных, где имена столбцов:

Class      Technique     Algorithm    1   2   3 ....

Моя проблема не с первыми тремя столбцами, а с остальными столбцами (целочисленные значения).Как вы видите в примере, количество столбцов для этих целочисленных значений отличается, что затрудняет мне, как называть эти столбцы (то есть, начиная с формы 1 до последнего значения, например, 4 в df1).

Может кто-нибудь помочь мне решить эту проблему?

1 Ответ

1 голос
/ 27 апреля 2019

Вот функция для вас. Первый аргумент dat - это ваш фрейм данных. Второй аргумент chr - это имена векторов для ваших первых нескольких столбцов.

header_fun <- function(dat, chr = c("Class", "Technique", "Algorithm")){
  dat2 <- setNames(dat, c(chr, 1:(ncol(dat) - length(chr))))
  return(dat2)
}

Функция вернет новый фрейм данных с обновленным заголовком.

header_fun(df1)
#      Class Technique Algorithm  C1  C2 C3 C4
# 1   Scribe   Reduced         A 5.0 2.5  3 10
# 2   Reader   Reduced         A 9.2 4.0 12 10
# 3 Optimise   Reduced         A 5.0 5.8  3 12

header_fun(df2)
#       Class Technique Algorithm    1    2
# 1   Convert   Reduced         A 14.0 25.0
# 2 Configure   Reduced         A 14.7  6.8
# 3      Race   Reduced         A  2.0  6.3

header_fun(df3)
#      Class Technique Algorithm   1   2  3  4   5    6
# 1 Abstract   Reduced         A 8.0 7.5  9  8 4.5 11.0
# 2 Follower   Reduced         A 5.5 6.0 14 19 6.0 13.5

DATA

df1 <- read.table(text = "Scribe       Reduced    A    5    2.5    3    10
Reader       Reduced    A    9.2  4      12   10
                  Optimise     Reduced    A    5    5.8    3    12",
                  header = FALSE, stringsAsFactors = FALSE)

df2 <- read.table(text = "Convert      Reduced    A    14    25  
Configure    Reduced    A    14.7  6.8      
Race         Reduced    A    2     6.3",
                  header = FALSE, stringsAsFactors = FALSE)

df3 <- read.table(text = "Abstract     Reduced    A    8    7.5    9    8     4.5    11
Follower     Reduced    A    5.5  6      14   19    6      13.5",
                  header = FALSE, stringsAsFactors = FALSE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...