目录
1. 修改excel表格列名,并合并所有excel
##----------------------------------------------------------------------------------------
# @author:Jackson Zhao
# @time:2023/3/29 14:28:59
# @description:修改excel表格列名,并合并所有excel表格
##
# 设置工作目录
setwd("D:/Datasets")
# 导入所需库
library(readxl)
library(plyr)
library(openxlsx)
# 获取文件夹下的所有Excel文件
files <- list.files(pattern = "\\.xlsx$")
# 循环读取并修改每个excel文件
for (file in files) {
# 读取excel文件
df <- read_excel(file, sheet = "Sheet1")
# 修改列名
colnames(df) <- c("x1", "x2", "x3", "x4", "x5")
# 将修改后的数据保存到原excel文件中
suppressWarnings(write.xlsx(df, file, sheetName = "Sheet1",
row.names = FALSE)
)
}
# 循环读取并合并Excel表格数据
df <- ldply(files, read_excel, .id = "file")[-1,]
# 将数据保存到一个Excel文件中
write.xlsx(df, "merged_data.xlsx", rowNames = FALSE)
2. 分组计算(group)
代码目的: 计算所有x1中相同对象的x2数据的标准差和平均值,并保存。
数据内容:
##----------------------------------------------------------------------------------------
# @author:Jackson Zhao
# @time:2023/3/29 19:03:02
# @description:计算所有x1中相同对象的x2数据的标准差和平均值,并保存
library(dplyr)
df <- read_excel("merged_data.xlsx")
# 按x1分组,计算x5的标准差和平均值
df_summary <- df %>%
group_by(`x1`) %>%
summarise(标准差 = sd(`x5`), 平均值 = mean(`x5`))
# 将计算结果添加到原数据框
df <- left_join(df, df_summary, by = "x1")
# 将计算结果写入Excel文件的新列中
write.xlsx(df, "output.xlsx", sheetName = "Sheet1", colNames = TRUE, append = TRUE)
结果展示:
3. 文件格式转换(txt to xlsx)
##----------------------------------------------------------------------------------------
# @author:Jackson Zhao
# @time:2023/3/31 09:27:50
# @description:在该目录中查找所有以“.txt”结尾的文件,并将它们转换为Excel文件。
# 转换后的Excel文件将保存在与txt文件相同的目录中,名称为“txt文件名.xlsx”。
#加载必要的包
library(dplyr)
library(readxl)
library(plyr)
library(openxlsx)
#设置工作目录
setwd("D:/Datasets")
#获取目录中所有txt文件的文件名
txt_files <- list.files(pattern = "\\.txt$")
#循环遍历所有txt文件并转换为Excel文件
for (file in txt_files) {
#读取txt文件
data <- read.table(file, header = TRUE, sep = "", fileEncoding = "UTF-8")
#获取文件名(去除.txt扩展名)
file_name <- sub("\\.txt$", "", file)
#写入Excel文件
write.xlsx(data, paste0(file_name, ".xlsx"), sheetName = "Sheet1", rowNames = FALSE)
}
4. 数据合并,添加新列
##--------------------------------------------------------------------------
# @author:Jackson Zhao
# @time:2023/3/31 09:27:50
# @description:合并所有excel表,并以文件名生成新列,插入到合并的表格中。
#加载必要的包
library(readxl)
library(dplyr)
#设置工作目录
setwd("D:/Datasets")
#获取目录中所有xlsx文件的文件名
xlsx_files <- list.files(pattern = "\\.xlsx$")
#循环遍历所有xlsx文件并合并为一个数据框
data <- NULL
for (file in xlsx_files) {
#读取xlsx文件
temp_data <- read_excel(file)
#将文件名添加为新列
temp_data$File <- file
#将数据添加到总数据框中
data <- bind_rows(data, temp_data)
}
#将数据按文件名排序
data <- data %>% arrange(File)
#删除添加的文件名列
#data$File <- NULL
write.xlsx(data, "mergedata.xlsx", sheetName = "Sheet1", colNames = TRUE, append = TRUE)
5. 遍历文件夹并对每个xlsx文件进行求和操作
##-----------------------------------------------------------------------------
# @author:Jackson Zhao
# @time:2023/4/8 00:22:23
# @description:遍历文件夹并对每个xlsx文件进行求和操作,并将结果保存在新文件中:
# 导入需要使用的包
library(readxl)
# 获取指定文件夹下的所有xlsx文件
files <- list.files(path = "C:/Users", pattern = "*.xlsx", full.names = TRUE)
files
# 遍历每个xlsx文件
for (file in files) {
# 读取Excel文件
df <- read_excel(file)
# 获取第一列中小于-100的行,并对Count求和
sum1 <- sum(df$Count[df$Value < -100])
# 获取第一列中大于等于-100且小于-50的行,并对Count求和
sum2 <- sum(df$Count[df$Value >= -100 & df$Value < -50])
# 获取第一列中大于等于-50且小于0的行,并对Count求和
sum3 <- sum(df$Count[df$Value >= -50 & df$Value < 0])
# 获取第一列中大于等于0且小于50的行,并对Count求和
sum4 <- sum(df$Count[df$Value >= 0 & df$Value < 50])
# 获取第一列中大于等于50且小于100的行,并对Count求和
sum5 <- sum(df$Count[df$Value >= 50 & df$Value < 100])
# 获取第一列中大于等于100的行,并对Count求和
sum6 <- sum(df$Count[df$Value >= 100])
# 构造新文件名
new_file_name <- paste0(tools::file_path_sans_ext(file), "_SUM.xlsx")
# 将数据写入新文件中
write.xlsx(data.frame(Sum1 = sum1, Sum2 = sum2, Sum3 = sum3, Sum4 = sum4, Sum5 = sum5, Sum6 = sum6),
file = new_file_name)
}