读取文件merged_data1.csv,计算Group列、virus_anno
列每种类型与mapped_ratio列的平均值和sd,最大值最小值频数,保存成mean±sd形式的表格,并绘制箱型图,横坐标为Group,用不同颜色表示,只看BR开头的,保存,R实现,去掉有效列选项
setwd("D:\\kzgz\\data\\11月\\11-26\\统计\\长度")
# 加载所需的包
library(readr)
library(dplyr)
library(ggplot2)
# 读取merged_data1.csv文件
data <- read_csv("merged_data1.csv")
# 将Group列和virus_anno列转换为因子类型
data$Group <- as.factor(data$Group)
data$virus_anno <- as.factor(data$TE.Virtus.NT_subtype)
# 筛选出virus_anno列不以BR开头的数据
flitered_data <- data %>%
filter(grepl("^BR", TE.Virtus.NT_subtype))
###这里加!是筛选非的
# 按Group列、virus_anno列的不同类型分组,计算每组对应的mapped_ratio列的相关统计量
stats_result <- data %>%
group_by(Group, TE.Virtus.NT_subtype) %>%
summarise(
Mean = mean(virus_aln_length, na.rm = TRUE),
SD = sd(virus_aln_length, na.rm = TRUE),
Max = max(virus_aln_length, na.rm = TRUE),
Min = min(virus_aln_length, na.rm = TRUE),
Freq = n()
)
# 将平均值和标准差组合成mean±sd形式的新列
stats_result <- stats_result %>%
mutate(Mean_SD = paste0(round(Mean, 2), " ± ", round(SD, 2)))
# 选择需要保留的列,重新排列列顺序
stats_result <- stats_result %>%
select(Group, TE.Virtus.NT_subtype, Mean_SD, Max, Min, Freq)
# 将结果数据框保存为CSV文件
write.csv(stats_result, "result_statistics.csv", row.names = FALSE)
# 绘制箱型图,横坐标为Group,用不同颜色表示virus_anno
boxplot_obj <- ggplot(data, aes(x = Group, fill = TE.Virtus.NT_subtype, y = virus_aln_length)) +
geom_boxplot() +
labs(
title = "Boxplot of virus_aln_length by Group and TE.Virtus.NT_subtype",
x = "Group",
y = "virus_aln_length",
fill = "TE.Virtus.NT_subtype"
) +
theme(axis.text.x = element_text(angle = 45, hjust = 1, size = 10))
# 保存箱型图为图片文件(这里保存为png格式,可根据需求修改格式)
ggsave("boxplot_result.png", boxplot_obj, width = 10, height = 6)
统计数量
读取文件merged_data-lenggth.xlsx,计算SampleName列、TE.Virtus.NT_subtype
列每种类型的数量,保留ScientificName列,保存表格
# 加载所需的包
library(readxl) # 用于读取Excel文件
library(dplyr)
# 读取merged_data-lenggth.xlsx文件
data <- read_excel("merged_data-lenggth.xlsx")
# 按照SampleName列和TE.Virtus.NT_subtype列进行分组,并统计每组的数量
count_result <- data %>%
group_by(SampleName, TE.Virtus.NT_subtype) %>%
summarise(Count = n())
# 将统计结果与原数据中的ScientificName列合并(通过左连接,以确保保留所有原有的行信息)
final_result <- left_join(data, count_result, by = c("SampleName", "TE.Virtus.NT_subtype"))
# 选择需要保留的列(SampleName、TE.Virtus.NT_subtype、ScientificName、Count)并去除重复行(可能由于连接操作产生重复)
final_result <- final_result %>%
select(SampleName, TE.Virtus.NT_subtype, ScientificName, Count) %>%
distinct()
# 将最终结果保存为CSV文件(你也可以根据需求保存为其他格式,如Excel等)
write.csv(final_result, "result_count.csv", row.names = FALSE)