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