R語言求一行(列表、list)數(shù)據(jù)的平均數(shù)操作
R語言求一個列表的平均數(shù)可以使用mean() :
mean英文意思有平均數(shù)的含義
x=c(1,3,5,7,9) max(x) #這樣即可求得平均數(shù)為 : 5
假如讀取過一個csv文件之后,要求其中一行數(shù)據(jù)中指定某個區(qū)間內(nèi)的平均數(shù)可以使用rowMeans()
data = read.csv(“input.csv",sep=",",header=T) rowMeans(data[10:17])
補(bǔ)充:R語言-數(shù)據(jù)框分組求平均值
【技術(shù)關(guān)鍵】
1、從excel把數(shù)據(jù)讀到數(shù)據(jù)框
2、算法實(shí)現(xiàn)將數(shù)據(jù)框的一些數(shù)據(jù)合為新的數(shù)據(jù)并組成新的數(shù)據(jù)框
3、將處理結(jié)果,即新的數(shù)據(jù)框保存到excel文件(或.csv)
4、將繪圖結(jié)果輸出到PDF文件保存
最近在嘗試分析近日的環(huán)境溫濕度變化;
雖然設(shè)備只運(yùn)行了48小時左右;
但收集到的有效數(shù)據(jù)有30000+(當(dāng)然對于R而言這算很小意思的了);
由于環(huán)境溫濕度在一小段時間內(nèi)基本保持穩(wěn)定;
所以在分析幾日內(nèi)的溫濕度變化情況時可以以每10min為單位記錄數(shù)據(jù);
這就需要一個腳本,能將數(shù)據(jù)有效劃分為單位后求均值再保存到表;
################################################### # - Filename : washData.R # - Author : Johan Version : 1.0 Date : 2018/5/3 # - Discription : 將excel表中的數(shù)據(jù)分10min計(jì)算平均值 # 并保存到excel # - Function list : # 1. # - Others : # 1.本程序可分析.xls或.csv文件 ################################################### # 引用包 library(RODBC) # 設(shè)置工作目錄 setwd("H:/mySoftware/R/myData") # 導(dǎo)入數(shù)據(jù)到myDataFrame,文件名根據(jù)需要改變 # 打開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 # 計(jì)數(shù)器 flag <- FALSE # 保存指示 # 循環(huán)處理數(shù)據(jù) for(i in 1 : 31600){ # 當(dāng)前分鐘是否為10的倍數(shù) if(myDataFrame$minute[i] %% 10 == 0){ # 計(jì)算上一組數(shù)據(jù)的均值并保存 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 } # 緩存復(fù)位 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 } } # 構(gòu)建新數(shù)據(jù)框 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")
把處理結(jié)果保存到新的.csv或者.xls文件即是整個腳本的目的所在,方便后面的數(shù)據(jù)分析。
運(yùn)行后得到的效果如下:(由于溫濕度的數(shù)值不在一個層次所以反映得不太直觀,可嘗試調(diào)換plot和lines的順序,通過繪圖方面的學(xué)習(xí)可以畫出更好看的圖)
如果想要輸出為PDF保存該圖片,可以運(yùn)行另一個腳本:
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文件的一個好處就是它里面的圖片是矢量的,也就是說放大圖片不會改變圖片的原樣,原本看上去粘在一塊兒的點(diǎn)放大以后能看出來是分開的。
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
R語言中的fivenum與quantile()函數(shù)算法詳解
這篇文章主要介紹了R語言中的fivenum與quantile()函數(shù)算法詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-04-04R語言入門在CentOS服務(wù)器上配置RStudio Server
最近在服務(wù)器(Linux)上進(jìn)行RStudio Server的環(huán)境配置,其實(shí)主要的工作在RStudio的官方網(wǎng)站中已經(jīng)說明清楚了,關(guān)鍵是需要先安裝R,以及進(jìn)行部分配置2021-11-11