我想将当前数据框(带有一些空单元格)重塑为另一个数据框并创建新列(连接)

I want to reshape the current dataframe (with some empty cells) into another dataframe and create new columns (concatenate)

我有以下数据框

df<-read.table(text="Study.ID   Studlab Cohort.size No.DTA  No.TAA  Operative.mortality.DTA     Operative.mortality.TAA
                    30  Coselli2016     3309    0   3309    NA  249
                 42 Estrera2015     1896    646 1273    79  223
                 212    Youssef2015     62  NA  62  NA  14
                 203    Weiss2012   240 72  168 2   7
                 189    Tabayashi2010   102 4   98  0   6", sep="", header=T)

但我需要它看起来像这样

基本上重塑并添加 2 个新列 "Studlab.R and group"。 Studlab.R 是“Studlab”和 "group" 列的组合。 我找到了不同的重塑链接(例如 here 但我仍在为此苦苦挣扎

任何建议将不胜感激。

我会使用 tidyverse 包中的 gather() 并分 3 个步骤执行此操作,首先收集 NO.XXX,然后收集 Operative.XXX,然后在第 3 步中将它们连接在一起使用 mutate

添加列 'Studlab.R'
library(tidyverse)

#1
df2 <- df %>% 
  select(-starts_with("Operative")) %>% 
  gather(key = "group", value = "No.DTR.TAA", No.DTA, No.TAA) %>% 
  mutate(group = str_remove(group, "No\."))

#2
df_tmp <- df %>% 
  select(-starts_with("No")) %>% 
  gather(key = "group", value = "Operative.mortality.DTA.TAA", Operative.mortality.DTA, Operative.mortality.TAA) %>% 
  mutate(group = str_remove(group, "Operative\.mortality\."))

#3
df2 <- df2 %>% 
  full_join(df_tmp) %>% 
  mutate(Studlab.R = paste0(Studlab, " (", group, ")"))