R语言求一行(列表、list)数据的平均数操作
程序员文章站
2022-04-17 13:19:37
r语言求一个列表的平均数可以使用mean() :mean英文意思有平均数的含义x=c(1,3,5,7,9)max(x)#这样即可求得平均数为 : 5假如读取过一个csv文件之后,要求其中一行数据中指定...
r语言求一个列表的平均数可以使用mean() :
mean英文意思有平均数的含义
x=c(1,3,5,7,9) max(x) #这样即可求得平均数为 : 5
假如读取过一个csv文件之后,要求其中一行数据中指定某个区间内的平均数可以使用rowmeans()
data = read.csv(“input.csv",sep=",",header=t) rowmeans(data[10:17])
补充:r语言-数据框分组求平均值
【技术关键】
1、从excel把数据读到数据框
2、算法实现将数据框的一些数据合为新的数据并组成新的数据框
3、将处理结果,即新的数据框保存到excel文件(或.csv)
4、将绘图结果输出到pdf文件保存
最近在尝试分析近日的环境温湿度变化;
虽然设备只运行了48小时左右;
但收集到的有效数据有30000+(当然对于r而言这算很小意思的了);
由于环境温湿度在一小段时间内基本保持稳定;
所以在分析几日内的温湿度变化情况时可以以每10min为单位记录数据;
这就需要一个脚本,能将数据有效划分为单位后求均值再保存到表;
################################################### # - filename : washdata.r # - author : johan version : 1.0 date : 2018/5/3 # - discription : 将excel表中的数据分10min计算平均值 # 并保存到excel # - function list : # 1. # - others : # 1.本程序可分析.xls或.csv文件 ################################################### # 引用包 library(rodbc) # 设置工作目录 setwd("h:/mysoftware/r/mydata") # 导入数据到mydataframe,文件名根据需要改变 # 打开th_record2.xls,并读取表sheet1 channel <- odbcconnectexcel2007("th_record2.xls") mydataframe <- sqlfetch(channel, "sheet1") odbcclose(channel) # 为mydataframe增加列名 datacolname <- c("temp","humi","time","year","month","day","hour","minute","second") names(mydataframe) <- datacolname # 初始化缓存向量 # 时分秒为起始量,可修改 num <- c() # 编号 temp <- c() # 温度 humi <- c() # 湿度 t <- 0 # 温度缓存 h <- 0 # 湿度缓存 num <- 0 # 编号缓存 dn <- 0 # 计数器 flag <- false # 保存指示 # 循环处理数据 for(i in 1 : 31600){ # 当前分钟是否为10的倍数 if(mydataframe$minute[i] %% 10 == 0){ # 计算上一组数据的均值并保存 if(flag){ t <- t / dn h <- h / dn temp <- c(temp, t) humi <- c(humi, h) num <- num + 1 num <- c(num, num) flag <- false } # 缓存复位 dn <- 0 t <- 0 h <- 0 # 添加记录 t <- t + mydataframe$temp[i] h <- h + mydataframe$humi[i] dn <- dn + 1 } else{ # 添加记录 t <- t + mydataframe$temp[i] h <- h + mydataframe$humi[i] dn <- dn + 1 flag <- true } } # 构建新数据框 newframe <- data.frame(num, temp, humi) newname <- c("number","temp","humi") names(newframe) <- newname # 写入.csv文件 write.csv(newframe, "new_th_record.csv") # 绘图 plot(newframe$number, newframe$temp, pch=20, lty=3, col="red") lines(newframe$number, newframe$humi, pch=20, lty=3, col="blue")
把处理结果保存到新的.csv或者.xls文件即是整个脚本的目的所在,方便后面的数据分析。
运行后得到的效果如下:(由于温湿度的数值不在一个层次所以反映得不太直观,可尝试调换plot和lines的顺序,通过绘图方面的学习可以画出更好看的图)
如果想要输出为pdf保存该图片,可以运行另一个脚本:
pdf("new_th_record.pdf") plot(newframe$number, newframe$humi, pch=20, lty=3, col="blue") lines(newframe$number, newframe$temp, pch=20, lty=3, col="red") dev.off()
pdf文件的一个好处就是它里面的图片是矢量的,也就是说放大图片不会改变图片的原样,原本看上去粘在一块儿的点放大以后能看出来是分开的。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。
上一篇: 周世宗柴荣是个怎样的人?为何被称为“五代第一明君”?
下一篇: 女人的不同叫法