在R中列出tibble,用两种不同的方式总结它们,然后将每个总结写在一个以每个tibble命名的excel文件中

unguejic  于 2023-03-04  发布在  其他
关注(0)|答案(1)|浏览(154)

我有一个tibbles列表。我想用不同的方式总结这些tibbles,并为每个tibbles将这些总结写到excel工作簿中。
例如,我需要colA中每种类型项目的总计(有多少个AB、多少个BA等),我还需要colC中每种类型项目的总计。然后,我需要将每种类型的总计作为一种表(或df)。
我想采取这些汇总表,并有他们被写在一个excel工作簿命名的每个tibble单独的工作表。在这个例子中,我想3个不同的工作簿(一个用于铲1,一个用于铲2,一个用于小块3)。每个小块将具有两个薄片(一个是colA的总计摘要,另一个是colC的总计摘要)。每个工作表都将根据tibble的标题进行命名(1,2,3).我该怎么做?
谢谢你的时间和想法。

`1` <- tibble(colA = c("AB", "AB", "BA", "BA"), colB = c("K", "K", "K", "K"), colC=c("TP", "TP", "ND", "ND") )
`2` <- tibble(colA = c("CD", "AB", "BA", "BA"), colB = c("L", "L", "L", "L"), colC=c("TP", "ND", "ND", "ND") )
`3` <- tibble(colA = c("CD", "AB", "BA"), colB = c("M", "M", "M"), colC=c("TP", "ND", "ND"))

MyList <- list(`1`, `2`, `3`)

MyList

MyList
[[1]]# A tibble: 4 × 3 
colA colB colC 
<chr> <chr> <chr>
1 AB K TP 
2 AB K TP 
3 BA K ND 
4 BA K ND 

[[2]]# A tibble: 4 × 3 
colA colB colC 
<chr> <chr> <chr>
1 CD L TP 
2 AB L ND 
3 BA L ND 
4 BA L ND 

[[3]]# A tibble: 3 × 3 
colA colB colC 
<chr> <chr> <chr>
1 CD M TP 
2 AB M ND 
3 BA M ND
mwg9r5ms

mwg9r5ms1#

我们遍历list(命名后),select感兴趣的列,使用split.default将数据拆分为一个tibble列表,循环内部列表,获取列的count,将输出存储在对象“out”中。在用write.xlsx创建的工作簿中将内部列表元素写成工作表。由于这些工作表已经命名,因此工作表将使用相应的列名命名

library(purrr)
library(dplyr)
library(openxlsx)
names(MyList) <- seq_along(MyList)
 out <- map(MyList, ~ .x %>%
    select(colA, colC) %>%
    split.default(names(.)) %>%
     map(~ .x %>%
        count(across(everything()))) )
for(i in seq_along(out))
   write.xlsx(out[[i]], paste0(names(MyList)[i], ".xlsx"))

相关问题