如何遍历数据框中的列值,取均值并创建新的数据框?

pattman96

我在R中有一个较大的数据框,我想绘制温度随时间的变化。我以前曾尝试过此方法,但由于有太多数据,所以该图确实很吵,无法读取。

我尝试了其他类型的图来尝试解决此问题,但是它们并没有真正起作用。因此,我决定改为绘制每个小时的平均温度。

我已经从一个csv文件中上传了数据,大约有56,000行,一个小时大约是720行。

> head(wormData)
 Time     Date Day.of.Week Humidity.1 Temp.1 Vapor.Density.1 Base.Temp.1
1 0:18:44 1/7/2016      Friday       69.7   26.4           17.43       85.00
2 0:18:49 1/7/2016      Friday       69.7   26.4           17.43       27.44
3 0:18:54 1/7/2016      Friday       69.6   26.4           17.40       27.44
4 0:18:59 1/7/2016      Friday       69.6   26.4           17.40       27.44
5 0:19:05 1/7/2016      Friday       69.5   26.4           17.38       27.44
6 0:19:10 1/7/2016      Friday       69.5   26.4           17.38       27.44

我感兴趣的列是Temp.1,所以我想做的是取Temp.1列中每720个值的平均值,然后将每个平均值放入一个新的数据框中,以便绘制更清晰的图。

我想到只需要手动操作,但这大约需要50个数据点,而且我还有很多csv文件需要执行,因此,我对如何执行此操作提供了任何帮助,我们将不胜感激。我试着用平均值对数据进行子集化或向量化,并编写了一些循环,但是我很难告诉R我想要每720行的平均值。

非常感谢 :)

滕西拜

在以下基础之上的一种基本解决方案matrix

 set.seed(123)
 x<-sample(1:10,(720*5),replace=TRUE) # generate dummy data

 > str(x)
 int [1:3600] 3 8 5 9 10 1 6 9 6 5 ...

 # Use wormData$Temp.1 instead of x for your actual datas  
 z<-matrix(x,nrow=length(x)/719) # divide by 719 to get 720 values per row
 rowMeans(z) # 'loop' over each row to get the mean

输出:

[1] 5.654167 5.375000 5.358333 5.477778 5.618056

如果您的数据集不是720的倍数,则会收到警告,最后一点将为假(回收向量以填充最后一行)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章