我有excel表中的每月数据,但是每周都会有总数,每周都会有一个每周数字的摘要,我添加了一个例子的屏幕截图。
我想把这个文件读到R中,前面几行(我已经使用SKIP完成了)并且没有每周末的摘要。在一些文件中,他们在一个摘要中合并了两周。
提示我有350个这种格式的文件,所以我不能一个接一个地浏览它们。
答案 0 :(得分:0)
您可以从这样的特定范围导入数据。
library(xlsx)
# first example subset; call it ss1
# assume first row is not a header; otherwise requires header = T
ss1 <- read.xlsx("C:/Users/your_path/test.xlsx", sheetIndex = 1, rowIndex = 4:5, colIndex = 2:3)
# second example subset; call it ss2
# just the same except worksheet index = 2
ss2 <- read.xlsx("C:/Users/your_path/test.xlsx", sheetIndex = 2, rowIndex = 4:5, colIndex = 2:3)
否则,如果我是你,我会创建一个小型VBA脚本,以便在Excel中理清数据,例如将相关数据集复制/粘贴到新工作表或工作簿中。然后,使用R从新清理的数据集导入数据。
答案 1 :(得分:0)
我现在在工作,我看不到你的形象。几乎所有东西都被我的办公室挡住了。我甚至可以做任何工作都是奇迹。无论如何,我记得,你有一堆空行,对。运行下面的宏将所有非空行从Sheet1复制到Sheet2。然后,从Sheet2,将您的数据加载到R。
Sub CopyNonBlanks()
Dim LastRow As Long
Dim i As Long, j As Long
'Find the last used row in a Column: column A in this example
With Worksheets("Sheet1")
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
End With
'MsgBox (LastRow)
'first row number where you need to paste values in Sheet1'
With Worksheets("Sheet2")
j = .Cells(.Rows.Count, "A").End(xlUp).Row + 1
End With
For i = 1 To LastRow
With Worksheets("Sheet1")
If .Cells(i, 1).Value <> "" Then
.Rows(i).Copy Destination:=Worksheets("Sheet2").Range("A" & j)
j = j + 1
End If
End With
Next i
End Sub
然后。 。 。
# read in the worksheet named Sheet2
mydata <- read.xlsx("c:/myexcel.xlsx", sheetName = "Sheet2")