【发布时间】:2020-07-15 09:10:24
【问题描述】:
我正在尝试从 Excel 电子表格导入数据,只选择一组工作表(不是所有工作表),然后执行几个数据转换步骤(旋转更长的时间并更改数据类型)。
我在 4 行代码中得到了这个,理论上我可以为每张纸复制并粘贴这个块(总共 8 行),但我想看看我是否可以用一个函数遍历这一切。
步骤如下:
1) 读取特定工作表并将其保存为数据框
2) 转轴时间更长,以 2:13 为单位
3) 将新列值从excel日期类型(数字)更改为实际日期
4) 将日期改为 yearmon 格式
这是我为一张纸执行此操作的代码:
kerrie <- read_excel("report.xlsx", sheet = "KERRIE_DATA") # load Kerrie data sheet
kerrie <- pivot_longer(kerrie, 2:13, names_to = "month") # put months into rows
kerrie$month <- excel_numeric_to_date(as.numeric(kerrie$month), date_system = "modern") # change date data type
kerrie$month <- as.yearmon(kerrie$month) # turn into yearmon
这是一个包含所有工作表名称的向量
sheetNames <- c("KERRIE_DATA", "GAIL_DATA", "DANIELLE_DATA", "ISABELLE_DATA","ESTELLE_DATA", "CLARE_DATA", "JEN_DATA", "CHRIS_DATA")
这是我为第 1 步找到的解决方案:它遍历 excel 工作簿并导入我想要的工作表,将它们保存为数据框
library(openxlsx)
a <- loadWorkbook("report.xlsx")
for(i in 1:length(sheetNames))
{
assign(sheetNames[i],readWorkbook(a,sheet = i))
}
你能帮我把步骤 2:4 放到一个函数/循环中吗?
【问题讨论】:
标签: r excel function dataframe for-loop