Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用R按季节平均_R_Average - Fatal编程技术网

使用R按季节平均

使用R按季节平均,r,average,R,Average,我有按位置、纬度和经度划分的每日数据,我想按季节划分平均值。我想把三月一日视为第1季,四月至六月,第2季,七月至九月第3季,十月到第4季。下面是所需的示例数据和输出 Lat Long Date Value. 30.497478 -87.880258 01/01/2016 10 30.497478 -87.880258 02/02/2016 15 30.497478 -87.8

我有按位置、纬度和经度划分的每日数据,我想按季节划分平均值。我想把三月一日视为第1季,四月至六月,第2季,七月至九月第3季,十月到第4季。下面是所需的示例数据和输出

Lat            Long           Date          Value.
30.497478    -87.880258      01/01/2016       10
30.497478    -87.880258      02/02/2016       15
30.497478    -87.880258      02/05/2016       20
33.284928    -85.803608      01/02/2016       10
33.284928    -85.803608      01/03/2016       15
33.284928    -85.803608      01/05/2016       20
输出应该是

Lat              Long         Season      Avg Value
30.497478      -87.880258       1            15

除平均值外,还要添加中值和SD。我看到了一些使用library zoo和dplyr的示例,但在本例中无法使用。希望这里有人能帮忙。谢谢。

可能是:

df <- read.table(text = "
                 Lat            Long           Date          Value.
30.497478    -87.880258      01/01/2016       10
                 30.497478    -87.880258      02/02/2016       15
                 30.497478    -87.880258      02/05/2016       20
                 33.284928    -85.803608      01/02/2016       10
                 33.284928    -85.803608      01/03/2016       15
                 33.284928    -85.803608      01/05/2016       20", header = T)


df$Season <- cut(as.numeric(substr(df$Date, 4, 5)), c(1,4,7,10,12), c(1,2,3,4), include.lowest = T)

library(dplyr)
options(pillar.sigfig = 6) # to prevent Lat and Long to be rounded

df %>% 
  group_by(Lat, Long, Season) %>% 
  select(-Date) %>% # since all other variables all grouping vars, just deselect Date
  summarise_all(funs(mean, median, sd))

     Lat     Long Season    mean  median        sd
    <dbl>    <dbl> <fct>    <dbl>   <dbl>     <dbl>
1 30.4975 -87.8803 1      12.5000 12.5000   3.53553
2 30.4975 -87.8803 2      20.0000 20.0000 NaN      
3 33.2849 -85.8036 1      12.5000 12.5000   3.53553
4 33.2849 -85.8036 2      20.0000 20.0000 NaN     

请注意,对于第二季,无法给出sd,因为样本数据中的每个Lat和Long组合只有一个值。

请将您的代码包装在代码标签{}按钮中,然后一定要让我们知道。感谢您的回复。日期采用mm/dd/yyyy格式。以上就是第1季。那你怎么分割呢?只需做substrX,1,2,而不是substrX,4,5谢谢我试过做substr X,1,2,我收到了一条警告消息,是强制引入的NAs。有些人在新的专栏中有季节号,有些人只有NA。另外,10月被解读为第三季。部分问题可能是1月到9月是1到9,而不是01到09。因此,它唯一的降幅应该是第四季,而不是第三季到12月。有什么建议吗?我将日期格式化为1-9个月的0,并将您的代码从c1,4,7,10,12修改为c1,3,6,9,12,效果非常好。谢谢你的帮助。