gpt4 book ai didi

r - 如何构建一个循环遍历数据帧并转换其中数据的函数(R)

转载 作者:行者123 更新时间:2023-12-04 10:17:28 24 4
gpt4 key购买 nike

我正在尝试从 excel 电子表格中导入数据,只选择一组工作表(不是所有工作表),然后执行几个数据转换步骤(旋转更长的时间并更改数据类型)。

我在 4 行代码中得到了这个,理论上我可以为每张纸复制并粘贴这个 block (总共 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 放到一个函数/循环中吗?

最佳答案

您可以编写一个包含所有步骤的函数:

apply_fun <- function(sheet_name) {
kerrie <- readxl::read_excel("report.xlsx", sheet = sheet_name)
kerrie <- tidyr::pivot_longer(kerrie, 2:13, names_to = "month")
kerrie$month <- janitor::excel_numeric_to_date(as.numeric(kerrie$month),
date_system = "modern")
kerrie$month <- zoo::as.yearmon(kerrie$month)
return(kerrie)
}

并将其应用于所有工作表
complete_data <- lapply(sheetNames, apply_fun)

这将返回 complete_data 中的数据帧列表.

关于r - 如何构建一个循环遍历数据帧并转换其中数据的函数(R),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61007807/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com