R語言求一行(列表、list)數據的平均數操作
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文件的一個好處就是它裡面的圖片是矢量的,也就是說放大圖片不會改變圖片的原樣,原本看上去粘在一塊兒的點放大以後能看出來是分開的。
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。如有錯誤或未考慮完全的地方,望不吝賜教。