使用R按季节平均
我有按位置、纬度和经度划分的每日数据,我想按季节划分平均值。我想把三月一日视为第1季,四月至六月,第2季,七月至九月第3季,十月到第4季。下面是所需的示例数据和输出使用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
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,效果非常好。谢谢你的帮助。