r - 如何将标题添加到多个列
问题描述
我有一个如下所示的 data.frame:
可以使用代码构建示例数据:
df<- structure(list(Name = c("B2", "A2", "B3", "A3", "B4", "A4"),
Var1.x = c(29, 56, 25, 11, 0, 58), Var2.x = c(65, 35,
15, 11, 0, 58), Var3.x = c(95, 632, 25, 11, 0, 58), Var1.y = c(29,
56, 25, 11, 0, 58), Var2.y = c(29, 56, 25, 11, 0, 58), Var3.y = c(29,
56, 25, 11, 0, 58)), row.names = c(NA, -6L), class = c("tbl_df",
"tbl", "data.frame"))
我需要把它写成一个excel文件。如何在输出中添加标题?这是我可以修改 df 以实现此目标的一种方式吗?如果我们需要您的合并单元格来构建标题,这是一种查找具有.x
并合并到Subject x
的列而不是计算列号的方法吗?
目前我有我的代码:
wb <- createWorkbook()
addWorksheet(wb, sheetName = "Question")
writeData(wb, sheet = "Question", x = df, colNames = TRUE, startCol = 1, startRow = 2)
saveWorkbook(wb, paste("C:/Question.xlsx"),overwrite = TRUE)
解决方案
这是使用该xlsx
软件包的一种方法:
library(xlsx)
library(stringr) # For str_extract. regmatches is very cumbersome
workbook <- createWorkbook()
sheet <- createSheet(workbook, sheetName = "Question")
row <- createRow(sheet, 1)
cells <- createCell(row, seq_along(colnames(df)))
suffixes <- unique(na.omit(str_extract(colnames(df),"(?<=\\.)\\w$")))
for(suf in suffixes){
ind <- grep(paste0("\\.",suf,"$"),colnames(df))
setCellValue(cells[[ind[1]]], paste0("Subject ",toupper(suf)))
setCellStyle(cells[[ind[1]]], CellStyle(workbook) + Alignment(horizontal = "ALIGN_CENTER"))
addMergedRegion(sheet, startRow = 1, endRow = 1,
startColumn = ind[1],
endColumn = tail(ind,1))
}
addDataFrame(as.data.frame(df), sheet, row.names=FALSE, startRow=2)
saveWorkbook(workbook,'df.xlsx')
推荐阅读
- python - JSONDecodeError("Expecting value", s, err.value) from None 抓取时
- python - 从 Python 数据框创建 Json 文件,并在一个列上进行分组,并将列名作为键,并将唯一值作为键内的列表
- arangodb - 有没有办法限制每个子迭代(不是全部)?
- python - 如何从一堆元组中制作一个 3d 数据集?
- python - Python 循环遍历 pandas 数据框,将不同的收件人、标题和电子邮件内容插入到 Outlook 电子邮件中
- java - 在 Spring 中使用 @Query 更新表
- python - Django模型设置字段默认为另一个字段
- composer-php - 在 symfony 5 上安装stof/doctrine-extensions-bundle 时作曲家冲突
- python - Python将不一致的列表转置/转换为DataFrame
- mysql - 是否可以在一次查询中选择所有仅包含成分 A 和 B 的菜肴?