как я заменяю значение первой строки после повторной привязки имен столбцов к data.frame

#r

#r

Вопрос:

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

Можно ли заменить значение первой строки на класс # на «#», а класс #.1 на «%»?

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

образцы данных могут быть построены с использованием следующих кодов:

 df<-structure(list(AEDECOD = c("Alanine aminotransferase increased", 
"Aspartate aminotransferase increased"), `Grade 1` = 0:1, `Grade 1.1` = c("(0.00 %)", 
"(5.26 %)"), `Grade 2` = 1:0, `Grade 2.1` = c("(5.26 %)", "(0.00 %)"
), `Grade 3` = c(0L, 0L), `Grade 3.1` = c("(0.00 %)", "(0.00 %)"
), Total = c(1, 1), Total.1 = c("(5.26 %)", "(5.26 %)")), row.names = 1:2, class = "data.frame")

 

Ответ №1:

Вы можете использовать регулярное выражение для идентификации столбцов и использовать его в across :

 library(dplyr)


df %>%
  mutate(across(matches('(Grade \d $)|(^Total$)'), replace, 1, '#'), 
         across(matches('(Grade \d \.\d $)|(Total\.\d )'), replace, 1, '%'))

#                              AEDECOD Grade 1 Grade 1.1 Grade 2
#1                              AEDECOD       #         %       #
#2   Alanine aminotransferase increased       0  (0.00 %)       1
#3 Aspartate aminotransferase increased       1  (5.26 %)       0

#  Grade 2.1 Grade 3 Grade 3.1 Total  Total.1
#1         %       #         %     #        %
#2  (5.26 %)       0  (0.00 %)     1 (5.26 %)
#3  (0.00 %)       0  (0.00 %)     1 (5.26 %)
 

данные

 df <- rbind(names(df),df)
 

Ответ №2:

это также подойдет

 df <- rbind(colnames(df), df)

library(stringr)
df[1,] <- str_replace(str_replace(df[1,], "(Grade \d $)|(^Total$)", "#"), "(Grade \d \.\d $)|(Total\.\d )", "%")

> df
                               AEDECOD Grade 1 Grade 1.1 Grade 2 Grade 2.1 Grade 3 Grade 3.1 Total  Total.1
1                              AEDECOD       #         %       #         %       #         %     #        %
2   Alanine aminotransferase increased       0  (0.00 %)       1  (5.26 %)       0  (0.00 %)     1 (5.26 %)
3 Aspartate aminotransferase increased       1  (5.26 %)       0  (0.00 %)       0  (0.00 %)     1 (5.26 %