在 R 中转换数据框中的多个工作表

Transform multiple sheets in dataframes in R

愚蠢的问题 - 如何改进此代码?

my_data1 <- read_excel("C:/Users/farj0/Downloads/Pilares_ranking_clp.xlsx", sheet = 1)

my_data2 <- read_excel("C:/Users/farj0/Downloads/Pilares_ranking_clp.xlsx", sheet = 2)

my_data3 <- read_excel("C:/Users/farj0/Downloads/Pilares_ranking_clp.xlsx", sheet = 3)

my_data4 <- read_excel("C:/Users/farj0/Downloads/Pilares_ranking_clp.xlsx", sheet = 4)

k = list(my_data1,my_data2,my_data3,my_data4) %>% reduce(left_join, by = "Município")

谢谢!!

我们可以遍历 sheet 数字并将其读入 listreduce 并加入它们

library(purrr)
library(readxl)
library(dplyr)
k <- map(1:4, 
 ~ read_excel("C:/Users/farj0/Downloads/Pilares_ranking_clp.xlsx", 
              sheet = .x)) %>%
         reduce(left_join, by  = "Município")

不如上面的答案干净,但您也可以合并或加入所有数据名,具体取决于列是否相同:

df <- merge(read_excel("C:/Users/farj0/Downloads/Pilares_ranking_clp.xlsx", sheet = 1) %>% 
  read_excel("C:/Users/farj0/Downloads/Pilares_ranking_clp.xlsx", sheet = 2) %>% 
  read_excel("C:/Users/farj0/Downloads/Pilares_ranking_clp.xlsx", sheet = 3) %>% 
  read_excel("C:/Users/farj0/Downloads/Pilares_ranking_clp.xlsx", sheet = 4))

您可以根据自己的目标更改 merge() 任何联接。

您应该在 (...) 中填写您想合并的任何列,或者像我上面那样完全删除 by()。我在 by().

中放置了虚拟列
df <- merge(read_excel("C:/Users/farj0/Downloads/Pilares_ranking_clp.xlsx", sheet = 1) %>% 
  read_excel("C:/Users/farj0/Downloads/Pilares_ranking_clp.xlsx", sheet = 2) %>% 
  read_excel("C:/Users/farj0/Downloads/Pilares_ranking_clp.xlsx", sheet = 3) %>% 
  read_excel("C:/Users/farj0/Downloads/Pilares_ranking_clp.xlsx", sheet = 4), 
  by = c("Col1", "Col2"))

相同的 by() 语句也适用于 join() 函数。如果你有大量的床单,这可能会很烦人。