R XLConnect使用在第一个单元格中找到的内容将索引/公式获取到一大块数据

时间:2014-06-11 19:10:08

标签: r excel xlconnect

很抱歉,如果这很难理解 - 我没有足够的业力来添加图片,所以我会尽我所能来描述这个!在R中使用XLConnect包读取&从/向Excel电子表格写入。

我正在开发一个项目,我试图从许多工作簿中取出数据列,并根据它们来自哪个工作簿将它们连接成一个新工作簿的行(每个工作簿是连续工作日的数据)。问题在于我所寻找的数据只是每个工作簿/工作表的一小部分(10行×3列),并且由于代表最初创建该工作表的人的邋iness而不总是位于工作表内的相同位置。电子表格。 (例如,我不能从单元格A2开始,因为在一个工作簿中从A2开始的数据集可能从另一个工作簿中的B12或C3开始)。

我想知道是否可以根据其内容搜索单元格(例如包含标题" Arb价格表"的单元格)并返回索引或参考公式以便能够访问该单元格。

还想知道,一旦我根据其内容引用该单元格,是否有一种方法可以调整该公式以达到我知道另一个单元格与该单元格进行比较的位置。例如,如果具有已知内容的单元格总是位于我希望开始收集数据的单元格左侧上方2行和3列左侧,那么我是否可以采用该第一个参考公式并将其递增2行和3列,以获取我想要的单元格的参考公式?

感谢您的帮助,如果您需要更多信息以便能够理解我的问题,请告诉我!

1 个答案:

答案 0 :(得分:0)

您可以使用类似

的矩阵读取整个工作表
library(XLConnect)
demoExcelFile <- system.file("demoFiles/mtcars.xlsx", package = "XLConnect")
mm <- as.matrix(readWorksheetFromFile(demoExcelFile, sheet=1))
class(mm)<-"character" # convert all to character

然后您可以搜索值并获取行/列

 which(mm=="3.435", arr.ind=T)

#      row col
# [1,]  23   6

然后你可以偏移那些并从矩阵中提取你喜欢的值。最后,当您知道要从哪里读取数据时,可以使用

转换为更清晰的数据框
read.table(text=apply(mm[25:27, 6:8],1,paste, collapse="\t"), sep="\t")

希望这能让您大致了解可以尝试的内容。如果不确切知道输入数据是什么样的话,很难更具体。