如何编辑电子表格特定列中随机选择的单元格并对多个电子表格重复此任务?

问题描述 投票:0回答:1

任务是为数据分析考试创建几个不同的电子表格文件。我想要有 50 个基于相同数据的电子表格版本,但每个文件都应该有一些带有随机编辑值的行。

例如,数据表基于各个科目的学生列表的分数。我想创建 50 个电子表格,其中为特定列编辑随机选择的单元格。因此,每个数据文件中该科目的分数平均值/中位数都会不同。

我认为需要遵循的工作流程是:

  1. 将表作为第一个电子表格文件的工作表中的数据对象读入 R/Python
  2. 从特定列中随机选择单元格并使用 rand Between() 函数编辑它们
  3. 覆盖现有电子表格文件中的工作表
  4. 对文件夹中的所有电子表格文件使用 for 循环重复此操作

我请求社区帮助创建一个 R/Python 脚本来执行此操作。

我使用了以下R代码

list_of_files <- dir("folder1")

# folder1 has 50 spreadsheets and is in the working directory

for(f in list_of_files){
          df1<-openxlsx::read.xlsx("f", sheet = "data", colNames=TRUE)
          df1[sample(.N,1), math_marks := ExcelFunctionsR::RANDBETWEEN(60, 95, number = 1)]
          openxlsx::write.xlsx(df1, file = "f", sheetName="data",colNames = TRUE)
 }

list_of_files 对象显示“file1.xlsx”“file2.xlsx”等。

错误出现在 read.xlsx.default("f",sheet = "data", colNames = TRUE) 中: 文件不存在。

r python-3.x for-loop dplyr edit
1个回答
0
投票

这是一种运行循环的方法,应该有效(它适用于我的示例文件):

for(f in list_of_files){
  df1 <- openxlsx::read.xlsx(f, sheet = "data", colNames=TRUE)
  idx <- sample(1:nrow(df1), 10)
  df1[idx, "math_marks"] <- round(runif(length(idx), 65, 95))
  openxlsx::write.xlsx(df1, file = f, sheetName="data",colNames = TRUE)
}
© www.soinside.com 2019 - 2024. All rights reserved.