我想将当前数据框(带有一些空单元格)重塑为另一个数据框并创建新列(连接)
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, ")"))
我有以下数据框
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
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, ")"))