Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
多个Excel电子表格导入到R_R - Fatal编程技术网

多个Excel电子表格导入到R

多个Excel电子表格导入到R,r,R,我有一个Excel文件和数百个电子表格 我读了一些关于stackoverflow的帖子,其中回答了如何使用read.xl包将它们导入R中等等 但是我需要为这个文件做些额外的事情。每个电子表格的顶部有2行标题,标题中的第一行有5位数字,我需要提取这些数字并将其插入表中 例如,header包含11111 ABC Corp.及其下面的数据集。 应该是这样的: 11111 ABC Corp. Product# | Description | Quantity

我有一个Excel文件和数百个电子表格

我读了一些关于stackoverflow的帖子,其中回答了如何使用read.xl包将它们导入R中等等

但是我需要为这个文件做些额外的事情。每个电子表格的顶部有2行标题,标题中的第一行有5位数字,我需要提取这些数字并将其插入表中

例如,header包含11111 ABC Corp.及其下面的数据集。 应该是这样的:

                     11111 ABC Corp.
Product#  |  Description | Quantity Order  | Price  |  Unit Price
在这里,我想导入如下数据:

ID#   |  Product # | Description | Quantity Order  | Price  |  Unit Price
11111 | 2813A      | Whatever    | 100 
11111 | 2222B
11111 | 7721CD
如上所述,对于每个电子表格,数字的五位数应复制到表格的第一列。每个电子表格都有不同的五位数要复制到其表格中

我在想,如果我有办法提取前五位数字,那么我可能可以使用loop来实现这一点

所以1。提取前五位数字。 2.设计一个循环,通过它我可以插入到第一列并导入到R

我可以使用哪些好功能


谢谢。

R是一个非常好的工具,可以处理很多事情!在这种情况下,我会在Excel中处理数据,然后将一个较大的合并范围导入到R中。我始终相信使用正确的工具来处理您正在处理的特定任务。因此,从这里开始下载并安装加载项

因此,将所有工作表(数百个)合并到一个大型工作表中。将第一个单元格设置为A2,直到工作表上的最后一个单元格。一旦所有数百张工作表合并为一张工作表,将其另存为CSV,并将其导入R

mydata <- read.table("c:/mydata.csv", header=TRUE, sep=",", row.names="id")

mydataR是一个非常好的工具,可以处理很多事情!在这种情况下,我会在Excel中处理数据,然后将一个较大的合并范围导入到R中。我始终相信使用正确的工具来处理您正在处理的特定任务。因此,从这里开始下载并安装加载项

因此,将所有工作表(数百个)合并到一个大型工作表中。将第一个单元格设置为A2,直到工作表上的最后一个单元格。一旦所有数百张工作表合并为一张工作表,将其另存为CSV,并将其导入R

mydata <- read.table("c:/mydata.csv", header=TRUE, sep=",", row.names="id")

mydata迭代的关键是为一个问题求解,然后应用于所有问题。一旦你知道了如何为一张纸做这件事,剩下的就很容易了

这是我根据你对文件的描述做出的猜测

library(readxl) # to read excel files
library(readr) # for type_convert

fname <- "test.xlsx"

## get sheet names
sheets <- excel_sheets(fname)

## function to process a single sheet
processSheet <- function(sheet, file) {
    all <- read_excel(file, sheet) # read all data
    id <- na.omit(names(all)) # extract the ID
    names(all) <- unlist(all[1, ]) # make the first row the names
    all <- all [-1, ] # get rid of the first row
    data.frame(ID = id, # add id column
               type_convert(all) # convert to appropriate column types
               )
}

## apply the function to each sheet, collecting the results into a
## data.frame
test.data <- do.call(rbind,
                     lapply(sheets,
                            processSheet,
                            file = fname))
library(readxl)#读取excel文件
库(readr)#用于类型_转换

fname迭代的关键是求解一个问题,然后应用于所有问题。一旦你知道了如何为一张纸做这件事,剩下的就很容易了

这是我根据你对文件的描述做出的猜测

library(readxl) # to read excel files
library(readr) # for type_convert

fname <- "test.xlsx"

## get sheet names
sheets <- excel_sheets(fname)

## function to process a single sheet
processSheet <- function(sheet, file) {
    all <- read_excel(file, sheet) # read all data
    id <- na.omit(names(all)) # extract the ID
    names(all) <- unlist(all[1, ]) # make the first row the names
    all <- all [-1, ] # get rid of the first row
    data.frame(ID = id, # add id column
               type_convert(all) # convert to appropriate column types
               )
}

## apply the function to each sheet, collecting the results into a
## data.frame
test.data <- do.call(rbind,
                     lapply(sheets,
                            processSheet,
                            file = fname))
library(readxl)#读取excel文件
库(readr)#用于类型_转换

fname我将使用宏/Visual Basic在Excel中完全修改电子表格,然后当它采用您想要的格式时,将其保存为CSV,然后使用R ro导入CSV。我发现Excel宏更容易使用。如果你想在R里面做,这个Q中的勾选答案有一些值得研究的功能。我将使用第一个“readLines”来读取您的5位数字,然后在第二步中,我将读取电子表格并与
cbind
一起使用,以获取您要查找的完整数据框。
openxlsx::read.xlsx
将允许您读取第一行(
read.xlsx>)(fname,rows=1)
),然后分别读取数据(
read.xlsx(fname,startRow=2)
)。标题行会稍微转换(例如,将空格转换为点),但如果您只需要数字,则一个简单的
gsub([^0-9],“”,x)
是一个好的开始……但也有一个好的开始推荐或查找书籍、工具、软件库、教程或其他非现场资源"。也许您可以尝试一下
openxlsx
readxl
,发布一些代码,并询问更具体的细节。我会使用宏/Visual Basic完全在Excel中修改电子表格,然后当它的格式为您想要的CSV时,再使用R ro导入CSV。我发现Excel宏更易于使用。如果您愿意的话在R里面做吧,这个Q中的勾选答案有一些值得研究的功能。我会使用第一个“readLines”来读取你的5位数字,然后在第二步中,我会读取电子表格,并与
cbind
一起使用,以获得你要查找的完整数据框。
openxlsx::read.xlsx
将允许你读取第一行(
read.xlsx(fname,rows=1)
),然后是数据(
read.xlsx(fname,startRow=2)
)。标题行转换了一点(例如,将空格转换为点),但如果您只需要数字,那么简单的
gsub([^0-9],“”,x)
是一个好的开始……但也有一个相反的结果“推荐或查找一本书、工具、软件库、教程或其他非现场资源”。也许您可以尝试一下
openxlsx
readxl
,发布一些代码,并询问更具体的细节。