如何根据同一行的ID利用R语言对值进行求和

需求:将属于同一分组的对应的值进行求和或者求平均值

R 复制代码
#设置工作目录
> getwd()
[1] "C:/Users/86150/Documents"
> setwd("C:/Users/86150/Desktop/AA2024/RUF")
> list.files()
#读取文件
>install.packages("readxl")
>library("readxl")
> df <- read_excel("202002_RUF_Seed.xlsx")
> head(df)
# A tibble: 6 × 2
  group seed 
  <chr> <chr>
1 R1    5.33 
2 R10   1.8  
3 R10   0.45 
4 R10   5.68 
5 R10   1.48 
6 R105  0,.06

##利用函数aggregate进行分组求和
> merge_data <- aggregate(.~group,data=df,sum())

出现报错:

Error in FUN(X[[i]], ...) : invalid 'type' (character) of argument

R 复制代码
You need to remove the color column from the x argument, since it is not being used in aggregation, but is actually the by argument.

aggregate(csv[-1], csv["color"], sum)
#   color val2 val3
# 1  blue    6   13
# 2 green    7    3
# 3   red   11    9

换一种方法还是不行:

R 复制代码
library(dplyr)
df %>% group_by(group) %>% summarise_each(funs(sum))

使用命令 class(df$seed) :检测发现SUM求和的那一列为字符串类型

1\] "character"

解决方法:

发现是因为seed列为字符型,而sum函数要求数值型,因此只需要将seed转为数值型即可:

figa1 <- df %>% mutate(seed = as.numeric(as.character(seed))) %>% group_by(group) %>% summarize(total = sum(seed))

mutate(seed = as.numeric(as.character(seed)))指的是把count转为数值型

将结果输出:保存为excel的可读形式

R 复制代码
#加载"xlsx"
library(xlsx)
library(writexl)
install.packages("openxlsx")  #如果没有这个包就安装
library(openxlsx)

write.xlsx(figa1, "C:/Users/86150/Desktop/AA2024/RUF", append = TRUE)
write_xlsx(figa1, "C:/Users/86150/Desktop/AA2024/RUF")

##这个测试成功了
install.packages("openxlsx")  #如果没有这个包就安装
library(openxlsx)
write.xlsx(figa1, file = file.path("C:/Users/86150/Desktop/AA2024/RUF", "202002ruf_seed.xlsx"))

结果如图:total列显示为每个编号的总的种子总量(备注:因为一个材料编号一般种了三个重复)

注意事项:在将数据(a.xlsx)导入r语言之前需对数据进行检测,包括sum列的数字格式类型是否为字符串,以及sum值输入时是否存在错误(例如将"."写成",";是否存在中文即非纯数字)

参考文献来源:

R语言中怎么将数据框导出成xlsx文件并规定存放目录_r语言数据导出成xlsx-CSDN博客

R 报错: x invalid 'type' (character) of argument - 橙子牛奶糖 - 博客园 (cnblogs.com)

相关推荐
maqr_1102 分钟前
layui table单元格编辑 layui表格如何实现可编辑
jvm·数据库·python
z4424753266 分钟前
HTML函数开发用旋转屏有优势吗_特殊硬件形态适配说明【方法】
jvm·数据库·python
Biotree_202514 分钟前
打开细胞异质性与功能机制的黑匣子:单细胞转录组测序高级分析(一)
r语言
Aotman_19 分钟前
Element UI 表格搜索高亮
前端·javascript·vue.js·ui·elementui
2501_9142459329 分钟前
SQL如何统计分组内满足条件的唯一项_COUNT与DISTINCT
jvm·数据库·python
chen_ever29 分钟前
Redis详解|从基础到面试高频题
数据库·redis·后端·缓存
弱水三千 只取一瓢饮30 分钟前
sqlserver 从数据库A的备份文件,还原到数据库B中
数据库·sqlserver
池佳齐31 分钟前
软考高级系统架构设计师备考(十八):数据库系统—事务管理与并发控制
数据库·oracle·系统架构
数智化精益手记局31 分钟前
8d报告案例分析:拆解8d报告案例分析的8个步骤,解决生产现场重复发生的质量难题
大数据·数据结构·数据库·人工智能·精益工程
qq_1898070336 分钟前
C#怎么操作数据库存储过程 C#如何调用SQL Server存储过程传参并获取返回结果【数据库】
jvm·数据库·python