R语言处理表格数据(二)

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)

猜你喜欢

转载自blog.csdn.net/amyniez/article/details/129837006