首页 > 解决方案 > 绑定多个文件的多个excel表中的指定数据

问题描述

我有多个 excel 文件,每个文件都有多个工作表。每个文件代表一个人。

对于每个单独的文件,我这样做:

supdata = read_excel("K Data/K-ID-03.xlsx", sheet="Sup", skip = 2)
ID =  read_excel("K Data/K-ID-03.xlsx", sheet="Measurements",  col_names = FALSE)

id =  as.character( ID[1,1])  # extract id numnber
mass = as.numeric(ID[3,5]) # extract mass data

supdata = supdata%>%
    mutate(ID = id, Mass = mass) # create column of id number and column of mass

生产:

supdata

var1 var2 var3 ID Mass
1    75   x    03 80
2    62   y    03 80
3    65   z    03 80
etc.

我想从所有文件的特定工作表中获取数据,在将它们idmass效果绑定在一起之前创建列

var1 var2 var3 ID Mass
1    75   x    03 80
2    62   y    03 80
3    65   z    03 80
1    85   x    04 66
2    78   y    04 66
etc.

我想我需要做一个for循环或lapply. 这是我尝试过的:

path <- "K Data/"
l = list.files(path = path, "xlsx")

all = lapply(l, function(x){
  
  supdata = read_excel(x, sheet="Supervised", skip = 2)
  ID =  read_excel(x, sheet="Measurements",  col_names = FALSE)
  
  id =  as.character( ID[1,1])%>%
    str_replace("Participant ", "")
  mass = as.numeric(ID[3,5])
  
  supdata = supdata%>%
    mutate(ID = id, Mass = mass)})

我得到错误:

Error: `path` does not exist: ‘Filename.xlsx’ 
5.
stop("`path` does not exist: ", sQuote(path), call. = FALSE) 
4.
check_file(path) 
3.
read_excel(x, sheet = "Supervised", skip = 2) 
2.
FUN(X[[i]], ...) 
1.
lapply(l, function(x) {
    supdata = read_excel(x, sheet = "Supervised", skip = 2)
    ID = read_excel(x, sheet = "Measurements", col_names = FALSE)
    id = as.character(ID[1, 1]) %>% str_replace("Participant ",  ... 

即使“Filename.xlsx”位于path. l正确列出该路径中的文件。

标签: rfor-looplapplyreadxl

解决方案


推荐阅读