如何对列表中的多个df进行重新排序

  • 本文关键字:新排序 排序 df 列表 r
  • 更新时间 :
  • 英文 :


我有一个df列表。我想使用来自Order的信息对lst中的每个df进行排序。我尝试使用mapmap2来执行此操作。但是我的代码不起作用。有什么建议吗?

我想知道如何使用maplapply(如果可行的话(来实现这个目标。谢谢

## Sample list
lst1<- list(Test = structure(list(SubjectID = c("101-05-202", "101-06-203", 
"102-10-401", "101-11-402", "105-12-403", "101-13-501", "101-14-502", 
"101-15-503", "101-01-101", "101-05-202", "101-06-203", "101-11-402", 
"101-13-501", "101-14-502", "101-15-503", "101-01-101", "101-05-202", 
"101-06-203", "101-11-402", "101-13-501", "101-14-502", "101-15-503", 
"101-01-101", "101-05-202", "101-06-203", "101-11-402", "101-13-501", 
"101-14-502", "101-15-503", "101-05-202", "101-06-203", "101-11-402", 
"101-13-501", "101-14-502", "101-15-503", "101-06-203", "101-11-402", 
"101-13-501", "101-14-502", "101-15-503", "101-11-402", "101-13-501", 
"101-14-502", "101-15-503", "101-06-203", "101-11-402", "101-14-502", 
"101-06-203", "101-14-502", "101-06-203", "101-06-203", "101-06-203", 
"101-06-203", "101-06-203", "101-06-203"), Test = c("ELA", 
"ELA", "ART", "ELA", "ELA", "ELA", "ELA", "ELA", "ELA, PE", "ELA", 
"ELA", "ELA", "ELA, MATH", "ELA", "ELA", "ELA,PE", "ELA", "ELA", 
"ELA", "ELA", "ELA", "ELA", "PE", "ELA", "ELA", "ELA", "ELA", 
"ELA", "ELA", "ELA", "ELA", "ELA", "ELA,MATH", "ELA", "ELA", 
"ELA", "ELA", "ELA", "ELA", "ELA", "ELA", "ELA", "ELA", "ELA", 
"ELA", "ELA", "ELA", "ELA", "ELA", "ELA", "ELA", "ELA", "ELA", 
"ELA,PE", "ELA")), class = "data.frame", row.names = c(NA, -55L
)), Comments = structure(list(SubjectID = c("101-01-101", "101-02-102", 
"106-03-103", "101-05-202", "103-04-201", "103-09-303", "105-12-403"
), COMYN = c("No", "No", "No", "No", "No", "No", "Yes")), class = "data.frame", row.names = c(NA, 
-7L)), Enroll = structure(list(SubjectID = c("101-01-101", "101-02-102", 
"106-03-103", "101-05-202", "103-04-201", "101-06-203", "102-07-301", 
"105-08-302", "103-09-303", "102-10-401", "101-11-402", "105-12-403"
), EDT = c("09/03/2020", "09/11/2020", "10/08/2020", "12/08/2020", 
"12/09/2020", "12/23/2020", "02/02/2021", "02/17/2021", "03/10/2021", 
"04/19/2021", "04/28/2021", "06/03/2021")), row.names = c(NA, 
-12L), class = c("spec_tbl_df", "tbl_df", "tbl", "data.frame"
), spec = structure(list(cols = list(SubjectID = structure(list(), class = c("collector_character", 
"collector")), Group = structure(list(), class = c("collector_character", 
"collector")), Site = structure(list(), class = c("collector_character", 
"collector")), SubjectStatus = structure(list(), class = c("collector_character", 
"collector")), Visit = structure(list(), class = c("collector_character", 
"collector")), Form = structure(list(), class = c("collector_character", 
"collector")), FormEntryDate = structure(list(), class = c("collector_logical", 
"collector")), ICDT = structure(list(), class = c("collector_character", 
"collector")), ICDT_CODED = structure(list(), class = c("collector_logical", 
"collector")), ICPVDATE = structure(list(), class = c("collector_character", 
"collector")), ICPVDATE_CODED = structure(list(), class = c("collector_double", 
"collector")), Informed_C_CREATE_DTM = structure(list(), class = c("collector_character", 
"collector")), Informed_C_LAST_UPD_DTM = structure(list(), class = c("collector_character", 
"collector")), SubjectVisitFormID = structure(list(), class = c("collector_double", 
"collector"))), default = structure(list(), class = c("collector_guess", 
"collector")), skip = 1), class = "col_spec")))
## Order file
Order<-structure(list(File = c("Test", "Comments", "Enroll"), Order = c("SubjectID", 
"SubjectID", "SubjectID, mdy(EDT)")), row.names = c(NA, -3L), class = c("tbl_df", 
"tbl", "data.frame"))
## Order lst with Order
lst[Order$File] <- map2(lst[Order$File], Order$Order, ~ .x %>% 
arrange(paste(.y)))

我们可能需要parse表达式

library(dplyr)
library(purrr)
library(stringr)
library(lubridate)
lst1[Order$File] <- map2(lst1[Order$File], Order$Order,
~ .x %>%
arrange(!!! rlang::parse_exprs(str_replace(.y, ",", ";"))))

最新更新