首页 > 解决方案 > 如何将 df 绑定到 df 列表

问题描述

我有一个 df 列表lst1和一个 df 变量 name 和 label Label。我怎样才能Label与每个 df绑定lst。我了解所有列都lst将是章程,将无法再次用于分析。但这就是我想要的。我该怎么做?

lst<-list(Demographics = structure(list(SubjectID = c("101-01-101", 
"101-02-102", "101-03-103", "101-04-104", "104-05-201"), BRTHDTC = c("1953-07-07", 
"1963-07-02", "1940-09-11", "1955-12-31", "1950-12-04"), SEX = c("Female", 
"Female", "Male", "Male", "Female")), row.names = c(NA, -5L), class = c("tbl_df", 
"tbl", "data.frame")), DiseaseStatus = structure(list(SubjectID = c("101-01-101", 
"101-02-102", "101-03-103", "101-04-104", "104-05-201"), DSDT = c("2016-03-14", 
"2017-04-04", NA, "2016-05-02", "2018-07-06"), DSDT_P = c(NA, 
NA, "UN-UNK-2015", NA, NA)), row.names = c(NA, -5L), class = c("tbl_df", 
"tbl", "data.frame")), Visits = structure(list(SubjectID = c("101-01-101", 
"101-02-102", "101-03-103", "101-04-104", "104-05-201"), Visit = c("Screening: -28 Days to Day 1", 
"Screening: -28 Days to Day 1", "Screening: -28 Days to Day 1", 
"Screening: -28 Days to Day 1", "Screening: -28 Days to Day 1"
), VISND = c(NA_character_, NA_character_, NA_character_, NA_character_, 
NA_character_)), row.names = c(NA, -5L), class = c("tbl_df", 
"tbl", "data.frame")))

Label<-structure(list(Var = c("SubjectID", "BRTHDTC", "SEX", "DSDT", 
"DSDT_P", "Visit", "VISND"), label = c("Subject ID", "Birthday", 
"Gender", "DS Date", "DS Date Prob", "Date of Visit", "ND Visit"
)), row.names = c(NA, -7L), class = c("tbl_df", "tbl", "data.frame"

lst 中的预期 df 将如下所示:

在此处输入图像描述

标签: r

解决方案


对于需要将名称映射到名称的这类问题,我喜欢使用命名向量(带有函数setNames()),就像在 python 中使用字典一样。然后,您可以使用它来提取要添加到每个 data.frame 的标签向量。


var2label = setNames(Label$label, nm = Label$Var)

new_df_list = lapply(lst, function(L){

 col_names = names(L)
 col_labels = var2label[col_names]
 
 df = rbind(col_labels, data.frame(L))

 return(df)

})

第一个 data.frame 的输出

> new_df_list[[1]]
   SubjectID    BRTHDTC    SEX
1 Subject ID   Birthday Gender
2 101-01-101 1953-07-07 Female
3 101-02-102 1963-07-02 Female
4 101-03-103 1940-09-11   Male
5 101-04-104 1955-12-31   Male
6 104-05-201 1950-12-04 Female

推荐阅读