【问题标题】:want to average daily temperature想要平均每日温度
【发布时间】:2016-06-22 23:54:48
【问题描述】:

我的数据时间戳如下所示:

(列 V1 是一年,V2 是一年中的某一天,V2 是每 30 分钟一次的时间)。

    V1 V2  V3 V4 V5        V6        V7        V8        V9        V10      V11      
1 2009  1   0 NA NA 112.67702  98.59882 -7.290186 0.3382428 0.14929900 6.668614 
2 2009  1  30 NA NA  79.56672  74.99058 -7.356445 0.3258001 0.13855380 6.345498 
3 2009  1 100 NA NA 151.99107 129.30848 -7.400850 0.3475700 0.15769250 6.771588 
4 2009  1 130 NA NA  85.98330  69.35902 -7.577969 0.2079333 0.05647759 6.148865 
5 2009  1 200 NA NA  81.63526  69.48286 -7.587354 0.3306208 0.14272100 5.249530 
6 2009  1 230 NA NA 103.38915  90.44430 -7.500925 0.2955433 0.11396920 5.321435 
           V16      V17 V18 V19
1 -0.000167956 253.9534   0  NA
2 -0.000170257 256.4038   0  NA
3 -0.000112737 239.7196   0  NA
4 -0.000172556 223.8581   0  NA
5 -0.000138045 206.6773   0  NA
6 -0.000144948 201.8427   0  NA

我想平均温度,即 V19 列,它有很多 NA 值。我所做的似乎不正确?

options(stringsAsFactors = FALSE)
stannardrock <-read.table("~/Documents/USstandardrock/stannardrock_2009_14noice.txt", quote="\"", comment.char="", na.strings="-9999",header=F)
head(stannardrock)

stdir <- stannardrock
stdir$Date <-seq(as.POSIXct("2009-01-01 00:00"), as.POSIXct("2014-12-31 23:30"),by = 1800)

stdir[which(stdir < 0)] <- -9999
stdir$dateday <- cut(as.POSIXct(paste(stdir$V1,stdir$V2),format = "%Y%d"),breaks="day")
head(stdir)

means <- aggregate(stdir$V19 ~ dateday, stdir, mean)
head(means)
print(means

【问题讨论】:

  • 2009 1 0 2009 1 30

标签: r time timestamp average series


【解决方案1】:

首先,如果 V2 是一年中的某一天,您应该使用 %j 而不是 %d

stdir$dateday <- cut(as.POSIXct(paste(stdir$V1,stdir$V2),format = "%Y%j"),breaks="day")

那我觉得你应该试试这样的:

means <- aggregate(V19 ~ dateday, stdir, mean, na.rm=TRUE)

避免使用NAs

【讨论】:

  • 我做到了,但结果我每年只有 30 天。它应该是每年 365 天 dateday stdir$V19 1 2009-03-01 00:00:00 5.929376403 2 2009-03-02 00:00:00 3.132492685 3 2009-03-03 00:00:00 4.670815401 4 2009 -03-04 00:00:00 6.855639799 5 2009-03-05 00:00:00 2.459787619 6 2009-03-06 00:00:00 2.799550041 7 2009-03-07 00:00:060 5.04092037 5.04092037 -08 00:00:00 3.496983263 9 2009-03-09 01:00:00 1.246780340
  • 如何按季节平均?
猜你喜欢
  • 2023-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多